簡體   English   中英

在 while 循環中忽略“else”選項替代

[英]"else" option alternative is ignored in a while loop

這可能是一個簡單的問題,需要一個簡單的答案……但我一直在摸索為什么會這樣。 這是我正在測試的循環上的一個問題。 這是循環:

done = False
while done==False:
    checkUser = input("Do you want to continue?\nType Y or y to continue; any other char to quit\nType here: ")
    print(checkUser) # just to check the input

    if checkUser =='Y' or 'y':
        print ('Yes, I want to continue.')
        done = False
        break

    else:
        print('No. I want to quit now.')
        done = True
        sys.exit()

當我在 PyCharm 上運行此腳本時,我得到以下輸出:

Do you want to continue?
Type Y or y to continue; any other char to quit
Type here: y
y
Yes, I want to continue

Do you want to continue?
Type Y or y to continue; any other char to quit
Type here: n
n
Yes, I want to continue

問題:為什么忽略“else”選項?

我嘗試了很多變體,例如刪除sys.exit()等等,但循環的行為仍然相同。

if checkUser =='Y' or 'y':更改為if checkUser =='Y' or checkUser == 'y':代碼按您的預期工作。 if checkUser =='Y' or 'y':表示檢查 checkUser 是否為 'Y' 或 'y' 是否為真,這對於任何輸入都是正確的。

沒有必要在 if 條件的末尾添加break ,因為 while 循環已經由done變量控制。 並且您的 if 條件未正確編寫,因此機器將解釋為:

if (checkUser == 'Y') or ('y')

所以條件變成:

condition_1: checkUser = 'Y'?
condition_2: 'y'?

if 'y' 將始終生成 true,因此 while 循環將永遠是 go。 你應該做:

if checkUser == 'Y' or checkUser == 'y'

看看它是否對你有幫助。

暫無
暫無

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

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