簡體   English   中英

陷入無限循環。 Python

[英]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.

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