首页 > 解决方案 > 如何使用标记值通过while循环平均用户输入?

问题描述

对于课堂作业,我被要求创建一个程序,该程序使用 while 循环对用户输入的考试成绩进行平均。我想出了一个有效的程序,但是它不符合我的导师要求的具体标准。我需要使用一个while循环来允许用户输入任意数量的考试分数,每行一个数字,直到输入一个标记值。我如何使用 while 循环和标记值 9999 更改此程序以获得相同的结果?

这是我到目前为止所拥有的。

scores=int(input("how many test scores will you enter: "))
total_sum=0
for n in range(scores):
    numbers=float(input("Enter exam score : "))
    total_sum+=numbers
avg=total_sum/scores
print("average of ", scores, " test scores is :", avg)

输出应该是这样的

Enter exam score. 9999 to quit: 100
Enter exam score. 9999 to quit: 95.5
Enter exam score. 9999 to quit: 90
Enter exam score. 9999 to quit: 9999

These 3 scores average to : 95.16666667

标签: pythonpython-3.x

解决方案


认为最好的方法是将分数存储在一个列表中,然后在用户输入标记值后计算它们的平均值:

SENTINEL = float(9999)

scores = []
while True:
    number = float(input("Enter exam score (9999 to quit): "))
    if number == SENTINEL:
        break
    scores.append(number)

if not scores:
    print("You didn't enter any scores.")
else:
    avg = sum(scores)/len(scores)
    print("average of ", len(scores), " test scores is :", avg)

推荐阅读