2016-11-05 87 views
2

這只是我的代碼的一部分,我不確定爲什麼while循環不讓用戶再次嘗試。請幫幫我!我的while循環不起作用

answer3 = True 
while answer3: 
    if answer2.lower() == "no" or answer2.lower() == "nah": 
     print ("Okay then ... Bye.") 
     sys.exit() 
    elif answer2 == "Yes".lower() or answer2.lower() == "yeah" or answer2.lower() == "yes": 
     print ("Okay then ... \n") 
    else: 
     print("Please enter a valid answer! Try again!\n") 
    break 
+1

不包括你的代碼的圖像;將其粘貼到文本框中,然後突出顯示它並按Ctrl + K將其正確縮進。 – Aurora0001

+1

好的,謝謝@ Aurora0001 –

+0

@AsifKhan你確定你不想在迴路中退出嗎? –

回答

1

只要刪除中斷,您的問題是它在第一次迭代後停止。

發生了什麼是break指令用於放棄循環。在你的代碼中,你設置你的第一個變量爲True,並期望在條件不滿足時繼續循環。

代碼只是評估條件,最後一句(break)指示while退出,這就是你想要避免的。

使用此代碼來檢查正確的行爲:

import sys 

answer3 = True 
while answer3: 
    answer2 = raw_input("introduce your option: ") 

    if answer2.lower() == "no" or answer2.lower() == "nah": 
     print ("Okay then ... Bye.") 
     sys.exit() 
    elif answer2 == "Yes".lower() or answer2.lower() == "yeah" or answer2.lower() == "yes": 
     print ("Okay then ... \n") 
    else: 
     print("Please enter a valid answer! Try again!\n") 
+0

這是正確的休息是防止任何重複。 – kpie

+0

這在技術上是正確的,但最好解釋*爲什麼*刪除'break'修復了這個問題。沒有更詳細的解釋,OP可能仍然是初學者,並且不會完全理解。 – Aurora0001

+0

謝謝,但這並不奏效。 –

1

中斷功能退出while循環,所以即使ANSWER3仍然有真正的價值,它將停止在循環後結束它的第一個週期。刪除休息,它應該工作。

它終止當前的循環,並在下一 聲明恢復執行,就像在C.傳統break語句

的休息最常見的用途是當一些外部條件是 觸發需要倉促退出循環。 break語句可以在while和for循環中使用 。

如果使用嵌套循環,則break語句會停止最內層循環的執行 ,並在 該塊之後開始執行下一行代碼。

enter image description here

+0

我嘗試刪除中斷,但是當我這樣做時,只是一直反覆打印出相同的內容 –

+0

因爲answer2輸入在循環之外,所以它始終保持不變值。 – Pic

+0

但是,如果您的興趣正在檢查answer2的值一次,爲什麼要使用while循環,以便退出或繼續運行該程序? – Pic

0

除其他答案建議你需要再次得到ANSWER2的價值除去休息。

除此之外,我相信你也可能希望從環的情況下,答案突破是肯定的

answer3 = True 
while answer3: 
    answer2 = str(input("Enter your answer no/yes:")) 
    if answer2.lower() == "no" or answer2.lower() == "nah": 
     print ("Okay then ... Bye.") 
     sys.exit() 
    elif answer2 == "Yes".lower() or answer2.lower() == "yeah" or answer2.lower() == "yes": 
     print ("Okay then ... \n") 
     sys.exit() 
    else: 
     print("Please enter a valid answer! Try again!\n")