对于课堂作业,我被要求创建一个程序,该程序使用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
答案 0 :(得分:2)
认为最好的方法是将分数存储在列表中,然后在用户输入前哨值之后计算分数的平均值:
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)
答案 1 :(得分:1)
有两种方法可以解决此问题。通用方法是保持所有分数的连续运行以及您已阅读的分数,然后检查下一个要阅读的分数是== 9999
,以查看是否退出while循环
以下是一个快速版本:
num_scores = 0
total_sum = 0
shouldExit = False
while shouldExit is False:
nextScore = float(input("Enter exam score : "))
if nextScore == 9999: #find a way to do this that does not involve a == comparison on a floating-point number, if you can
shouldExit = True
if shouldExit is False:
num_scores += 1
total_sum += nextScore
avg = total_sum / num_scores
看看这种方法如何为您工作
答案 2 :(得分:1)
获取输入后,您就可以退出for循环。
for n in range(scores):
c = int(Input('Enter test score, enter 9999 to break'))
if c == 9999:
break;
scores += c
至少是这样的事情。