簡體   English   中英

Python 3 代碼 while 循環錯誤輸出

[英]Python 3 code while loop wrong output

它是用 python 3 編寫的。代碼試圖將所有輸入整數存儲到一個列表中,並找到最小值、最大值和平均值。 是什么導致輸出平均值在這里出錯?

from statistics import mean, median
def main():
    integers = []
    integer = 0
    while (1):    
        input_str = input('Enter a value (0 to end): ')
        try:
            integer = int(input_str)
        except ValueError:
            print('Invalid input. Type a legit integer.')
        if integer == 0:
            if integers == []:
                print('No integer stored.')

            else:
                print('Min: {0}\nMax: {1}\nAvg: {2:.1f}\n'.format(min(integers),max(integers),sum(integers)/len(integers)))
            break
        elif integer >= -65535 and integer <= 65535:
            integers.append(integer)
        else:
            print('The integer is out of range.')
main()

輸出是:

Enter a value (0 to end): 110
Enter a value (0 to end): 60
Enter a value (0 to end): abc
Invalid input. Type a legit integer.
Enter a value (0 to end): 50
Enter a value (0 to end): 90
Enter a value (0 to end): 40
Enter a value (0 to end): hanbagui
Invalid input. Type a legit integer.
Enter a value (0 to end): 0
Min: 40
Max: 110
Avg: 64.3

當你遇到錯誤時,你應該忽略下一段代碼並避免執行下一行,否則你將繼續運行下一行並且不小心發生了一些事情。

所以你應該添加代碼 do jumpValueError發生時。

try:
            integer = int(input_str)
        except ValueError:
            print('Invalid input. Type a legit integer.')
            continue #important

暫無
暫無

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

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