簡體   English   中英

為什么 else 語句不起作用而不是 if (所有以前的情況都不正確)?

[英]Why doesn't else statement work instead of if (all previous cases aren't true)?

所以我有一個表示內存的列表mem ,在這個循環中,我正在搜索dataSize內存中表示為“-”的空格數。
邏輯如下:
首先搜索“-” (空槽),然后將其標記為起始位置writeStart ,然后查看在該位置之后還有多少空槽並將其計為writeSize 如果找到足夠的插槽,則將Found設置為 True,否則循環中斷並返回到原始循環,搜索另一個空插槽作為writeStart 。然后我使用writeStartwriteSize作為參數在此循環后寫入內存。
這段代碼工作正常,但如果我用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

如果“第三個 if”是指同時具有mem[j]條件和writeSize條件的writeSize ,問題是else子句只能替代writeSize == dataSize if,而不是兩者。

我認為你可以像這樣重構代碼:

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

因為檢查writeSize只有在增加它時才重要。

我想你可以參考這個鏈接:

“如果”和“如果”之間的主要區別是什么?

您需要使用 elif - 鏈接上很好地解釋了原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM