所以我有一个表示内存的列表mem,在这个循环中,我正在搜索dataSize内存中表示为“-”的空格数。逻辑如下:首先搜索“-”(空槽),然后将其标记为起始位置writeStart,然后查看该位置之后还有多少空槽并将其计为writeSize。如果找到足够的插槽,则将Found设置为 True,否则循环中断并返回原始循环,搜索另一个空插槽作为writeStart。然后我使用writeStart和writeSize作为此循环后写入内存的参数。这段代码工作正常,但如果我用else切换第三个if语句,它将不再起作用。为什么?先感谢您。for i in range(len(mem)): if(mem[i] == "-"): writeStart = i writeSize = 0 for j in range(i, len(mem)): if(mem[j] == "-"): writeSize += 1 if(writeSize == dataSize): found = True break if((mem[j] != "-") & (writeSize != dataSize)): #if switched with an else: error i = j break if(found): break
1 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
如果“第三个 if”是指同时具有mem[j]条件和writeSize条件的条件,则问题在于该else子句仅是writeSize == dataSizeif的替代项,而不是两者的替代项。
我认为你可以像这样重构代码:
for j in range(i, len(mem)):
if (mem[j] == "-"):
writeSize += 1
if (writeSize == dataSize):
found = True
break
else:
i = j
break
因为检查writeSize只有在你增加它时才重要。
添加回答
举报
0/150
提交
取消