修复警告消息“名称‘某物’可能未定义”

问题描述 投票:0回答:1

我刚刚开始学习用 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 并且它意味着除以零。

python warnings
1个回答
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}")
© www.soinside.com 2019 - 2024. All rights reserved.