有誰知道為什么會這樣嗎? 當我第一次回答 "是 "時,它就會重新開始,然后我第二次說 "不 "時,它又問了一遍問題,但沒有打破回圈,但當我第三次說 "不 "時,它打破了回圈并關閉了應用程式
。我的問題是為什么它在第二次時沒有打破回圈
。def hello()。
print("hello"/span>)
while True:
answer = input("what do u wanna do"/span>)
if answer == "yes":
hello()
elif answer == "no":
input("Press Enter To Close")
print("bye")
import time
time.sleep(1)
break
else:
print("I didn't understand that")
hello()
uj5u.com熱心網友回復:
因為while回圈是在迭代函式hello()內,即使你使用了break,你的代碼并沒有在第一次呼叫時停止,而是在第二次呼叫時停止。
自我迭代在那里所做的是,它基本上回到了它首先離開的堆疊位置。然后,當你第二次輸入 "no "時,它已經準備好按照你的要求發揮作用。 由于同樣的原因,你會注意到當你在開始時立即輸入 "no "而不是 "yes "時,代碼確實停止運行。
如果你把while放在函式的外面,它就能作業。之所以這么多人一開始就成功了,是因為我們在復制和粘貼的時候,代碼的縮進是錯誤的,因此把while已經放在了外面^^'
uj5u.com熱心網友回復:
當你的答案是否定的時候,你正在呼叫一個輸入,但你只是想列印一個資訊。
def hello()。
print("hello"/span>)
while True:
answer = input("what do u wanna do"/span>)
if answer == "yes":
hello()
elif answer == "no":
print("Press Enter To Close")
print("bye")
import time
time.sleep(1)
break
else:
print("I didn't understand that")
uj5u.com熱心網友回復:
將程式縮短一點:
def hello() 。
print("hello"/span>)
while True:
answer = input("what do u wanna do"/span>)
if answer == "yes":
hello()
elif answer == "no":
break。
else:
print("I didn't understand that")
hello()
每當你輸入 "no",程式就會離開(break)一個while回圈。由于程式無條件地進入了最外層的while回圈,你需要至少輸入一次 "no "來結束程式。
每當你輸入 "是 "時,函式hello并不回傳,而是呼叫自己("遞回")并進入一個額外的while回圈。因此,對于每一個 "是",你需要額外輸入一個 "否"。
為了說明問題,這里有幾個互動的例子。
一個開放的小括號呼叫hello,進入一個回圈。
一個閉合的小括號離開了一個回圈,并從hello的呼叫中回傳。
( no -> ) end
(yes -> (no ->) no ->) end
(yes -> (no ->) yes -> (no ->) no ->) end
(是->(無->)是->(無->)是->(無->)無->) 結束
(是->(是->(不->)不->)不->)結束
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/327359.html
標籤:
上一篇:React中基于狀態的無限回圈
