为什么其他语句不起作用而不是if(以前所有情况都不是)?

时间:2018-12-22 00:48:58

标签: python python-3.x loops if-statement

因此,我有一个表示内存的列表 mem ,在此循环中,我正在搜索 dataSize 表示为“-”的空白空间在内存中。
逻辑如下:
首先搜索“-” (空插槽),然后将其标记为起始位置 writeStart ,然后查看该位置之后我还有多少空插槽,并将其计为 writeSize 。如果我找到了足够的插槽,否则将 Found 设置为True,否则循环中断并返回到原始循环,以 writeStart 的方式搜索另一个空插槽。然后我使用此循环后,writeStart writeSize 作为要写入内存的参数。
此代码正确运行,但是如果我切换了第三条 if 语句如果使用 else ,它将不再起作用。为什么?预先谢谢你。

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

2 个答案:

答案 0 :(得分:2)

如果用“第三个if”表示同时具有mem[j]条件和writeSize条件的条件,则问题在于else子句只能替代writeSize == dataSize,如果不是两者都适用。

我认为您可以像这样重组代码:

for j in range(i, len(mem)):
    if (mem[j] == "-"):
        writeSize += 1
        if (writeSize == dataSize):
            found = True
            break
    else:
        i = j
        break

因为检查writeSize仅在增加它时才重要。

答案 1 :(得分:1)

我认为您可以参考此链接:

What's the main difference between 'if' and 'else if'?

您需要使用elif-原因在链接上有很好的解释