如何只计算有效的输入



我有一个函数,应该接受输入,计算平均值和总数以及记录计数。

代码中的错误是:

尽管我添加了try和except来捕获错误,但这些错误也被添加到计数中。我如何只计算整数输入而不使"无效输入";伯爵的一部分?

代码片段

count = 0
total = 0
avg = 0
#wrap entire function in while loop
while True:
#prompt user for input
line = input('Enter a number: ')
try:
if line == 'done':
break
print(line)
#function formulars for total, count, avg
count = int(count) + 1
total = total + int(line)
avg = total / count
except:
print('Invalid input')
continue
#print function results
print(total, count, avg)

使用上面的代码打印(total, count, avg)输入即5,4,7,bla bla car, done的输出:

  • 将为16,4,5.33333333

  • 预期输出16,3,5.33333333

total = total + int(line)抛出错误时,

前一行count = int(count) + 1已经被执行,count增加了。

交换这两行应该可以解决问题。

count = int(count) + 1之前添加line = int(line),以便在count评估之前捕获异常,或者将其与total交换:

count = 0
total = 0
avg = 0
while (line := input('Enter a number: ')) != 'done':
try:
# line = int(line)
total += int(line)
count += 1
avg = total / count
except ValueError:
print('Invalid input')
print(total, count, avg)
# Enter a number: 5
# Enter a number: 4
# Enter a number: r
# Invalid input
# Enter a number: 7
# Enter a number: done
# 16 3 5.333333333333333

最新更新