[英]Stuck in an infinite loop. Python
我試圖讓這段代碼運行,這樣當我輸入“完成”時,它就會讓我跳出循環。 問題是我放了一個try/except來嘗試捕獲任何不是數字的東西並反饋和錯誤消息。 這會在 if 語句之前捕獲,這將使我脫離循環,而是反饋錯誤消息並將我捕獲到無限循環中。 我已經嘗試在所有if/else語句之后移動try/except ,但隨后字符串被放置在最大值的值內,這不是我想要完成的。 有沒有辦法讓我嘗試並運行,但仍然允許我通過“完成”命令退出循環?
largest = None
smallest = None
while True:
num = input("Enter a number: ")
try:
num = float(num)
except:
print('Invalid Input')
continue
if num == "done" :
break
elif largest is None:
largest = num
elif smallest is None:
smallest = num
elif largest < num:
largest = num
elif smallest > num:
smallest = num
print(num)
print("Maximum", largest)
print("Minimum", smallest)
首先測試done
,然后轉換為浮動
你可以簡化測試
如果您不輸入任何數字或輸入一個數字,該程序應該可以工作
num = input("Enter a number: ")
if num == "done" :
break
try:
num = float(num)
except:
print('Invalid Input')
continue
largest = largest or num
smallest = smallest or num
largest = max(num, largest)
smallest = min(num, smallest)
改變這個:
try:
num = float(num)
except:
print('Invalid Input')
continue
if num == "done":
break
對此:
try:
num = float(num)
except:
if num == "done":
break
print('Invalid Input')
continue
通過將if
放在except
中,您可以讓循環在continue
之前break
。
原因是您在檢查"done"
之前使用檢查輸入是否為浮點數,因此當它實際上"done"
時,它會在檢查之前繼續。
我會這樣修復它。
largest = None
smallest = None
while True:
num = input("Enter a number: ")
# check if it's done first
if num == "done" :
break
try:
num = float(num)
except:
print('Invalid Input')
continue
elif largest is None:
largest = num
elif smallest is None:
smallest = num
elif largest < num:
largest = num
elif smallest > num:
smallest = num
print(num)
print("Maximum", largest)
print("Minimum", smallest)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.