我刚刚开始学习用 python 编码,我想创建一个程序来重复读取整数,直到用户输入“完成”。输入“完成”后,我希望程序打印出输入到程序中的整数的总和、计数和平均值。 像这样:
Enter a number: 4
Enter a number: 5
Enter a number: bad data
Invalid input
Enter a number: 7
Enter a number: done
16 3 5.333333333333333
我设法用以下代码创建它
count = 0
add = 0
while True:
try:
y = input("enter a number: ")
if count != 0 and y == "done":
print(f"count:{count}\nsum:{add}\navg:{avg}")
break
elif count == 0 and y == "done":
print(f"count:{count}\nsum:{add}\navg:Invalid")
break
else:
y = int(y)
count = count + 1
add = add + y
avg = add / count
except ValueError:
print("invalid input")
插入示例中的相同值后,返回。
enter a number: 4
enter a number: 5
enter a number: bad data
invalid input
enter a number: 7
enter a number: done
count:3
sum:16
avg:5.333333333333333
但在 PyCharm(我正在使用的 IDM)中,它显示一条警告消息,指出“变量 'avg' 可能未定义”,现在我认为它的意思是,IDM 认为有一种方法可以在某种方式之后输入变量“avg”未定义。但我不知道如何重新编写代码,以便始终定义变量“avg”(简而言之:我想让警告消息消失),请随时改进我的代码并告诉我如何以及为什么,将不胜感激。
我理解这可能是因为 IDM 认为如果程序第一次运行时第一个 IF 语句为 TRUE,那么程序将在没有定义“avg”变量的情况下结束。 所以我想,如果我在第一个 IF 语句之前的开头某处定义了变量“avg”,那么它将停止显示警告消息,但我无法在一开始就定义它,因为计数变量仍然是 0 并且它意味着除以零。
在循环期间重复计算平均值是没有意义的。等到after循环退出来计算它。
count = 0
add = 0
while True:
y = input("enter a number: ")
if y == "done":
break
try:
y = int(y)
except ValueError:
print("invalid input")
continue
count += 1
add += y
if count == 0:
avg = "invalid"
else:
avg = add / count
print(f"count:{count}\nsum:{add}\navg:{avg}")