簡體   English   中英

如何在循環中使用 continue 語句?

[英]How to use continue statement in a loop?

這是一個從用戶那里獲取數字列表並計算最小和最大的代碼,直到他輸入“完成”。 每當用戶輸入無效輸入時,都應跳過此迭代。 我在循環中使用continue來執行此操作,但它沒有按我的預期工作。

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done" : break
    try:
        isinstance(num,int) == True
    except:
        print('Invalid input')
        continue
    if largest is None :
        largest = num
    elif num > largest :
        largest = num
    if smallest is None :
        smallest = num
    elif num < smallest :
        smallest = num
print("Maximum is", largest)
print("Minimum is", smallest)

例如,當使用這個輸入列表時: 1 2 ; alex 9 ; 7 ,這是我得到的 output :

Maximum is Alex
Minimum is 1

這應該有效,除非您實際上從未將輸入轉換為int 我相信input的返回值將始終是一個字符串。 這並不意味着它不能轉換為int ,但它最初將是字符串"42"而不是 int 42 我會嘗試:

而不是isinstance(num,int) == Trueint_input = int(num) 如果 num 不是類似 int 的輸入,則如果這不起作用,您的 try/catch 將捕獲。 請注意,您最初的isinstance()調用永遠不會引發異常,它只會評估為TrueFalse ,因此它將始終繼續進行,這就是您得到奇怪結果的原因。 您的 continue 現在位於正確的位置。 然后對代碼的 rest 使用int_input而不是num ,因為您需要處理 int,而不是字符串輸入。

這是一個例子:

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        int_input = int(num)
    except:
        print('Invalid input')
        continue
    if largest is None :
        largest = int_input
    elif int_input > largest :
        largest = int_input
    if smallest is None :
        smallest = int_input
    elif int_input < smallest :
        smallest = int_input
print("Maximum is", largest)
print("Minimum is", smallest)

首先,語句isinstance(num, int) == True檢查num是否為 integer,然后丟棄答案。 它實際上永遠不會導致錯誤(除非isinstance function 本身有內部錯誤)。

您可能想要使用if語句:

if not isinstance(num, int):
    print('Invalid input')
    continue

其次,正如其他人所指出的, input() function 將始終返回一個字符串; 當你給程序1 ; 2 ; alex 9 ; 7 ,它找到了按字母順序排列的最大值和最小值——或者,更確切地說,是字母順序的計算機變體,其中數字在字母之前。

暫無
暫無

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

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