为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2021-09-23 09:58:34
所以我有一个表示内存的列表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只有在你增加它时才重要。


查看完整回答
反对 回复 2021-09-23
  • 1 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信