为什么 else 语句不起作用而不是 if (所有以前的情况都不正确)?

所以我有一个表示内存的列表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


红糖糍粑
浏览 245回答 1
1回答

ABOUTYOU

如果“第三个 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只有在你增加它时才重要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python