我试图编写一个程序来确定一些测试的平均值。测试次数会有所不同,但我不希望它最初是由用户输入设置的。我想使用while循环和一个零的sentinel值来停止输入。我希望平均值显示为三位小数,%符号紧跟在最后一位后面,如下所示... 样本运行: 输入考试成绩80 输入考试成绩70 输入测试分数90 输入测试分数88 输入测试分数0 平均值为82.000%
total =0
counter = 0
while True:
entry = int(input('Enter test score:'))
if entry ==0:
break
total += entry
counter += 1
average = (total/counter)
print("The average score:",format(average, '.3f'),'%',sep='')
答案 0 :(得分:1)
While
必须全部小写。
if entry == 0
缺少冒号。
total += entry
和counter += 1
需要在循环中,因为它们必须在每次迭代时发生。
您是否尝试在发布此处之前运行您的代码?
答案 1 :(得分:0)
我至少看到这两个选项: 1.将值存储在数组中,然后在循环之后计算平均值。 2.在每个循环上迭代计算平均值
如果你期待大量的输入,我会去选项(2)。
关于格式化,这可能会有所帮助:https://docs.python.org/3/library/string.html#formatstrings
答案 2 :(得分:0)
它看起来并不像你尝试过,因为你的代码根本无法运行。但是,这是答案。您需要将结果存储在列表中,然后通过列表长度(分数)得到平均值的平均值。 .format方法允许您指定3个小数位。
scores = []
while True:
entry = int(input('Enter test score: '))
if entry == 0:
break
scores.append(entry)
print('The average is', "{0:.3f}".format(float(sum(scores) / len(scores))))
答案 3 :(得分:0)
以下情况应该有效。
scores = []
while True:
entry = input("Enter test score: ")
if entry == '':
break
elif not entry.isnumeric():
print("Scores must be numeric.")
else:
scores.append(int(entry))
average = sum(scores)/len(scores)
print("The average score is {:.03f}.".format(average))
平均值的计算方法是,将scores
列表的总和除以scores
中的元素总数。其余的只是逻辑,以确保用户输入数字分数,并在用户输入任何内容时退出(只需按返回没有文字)。
答案 4 :(得分:0)
total = 0
counter = 0
while True:
entry = int(input("Enter Test score: "))
if entry == 0: break
total += entry # this should be in while loop
counter += 1
total = total * 1.0
if counter == 0: exit(1)
avg = total / counter
print("Average is: %3.f" % avg + '%')
total + = entry应该在while循环中,因为你想为每个收到的条目添加它。 希望有所帮助:)
答案 5 :(得分:0)
total =0
counter = 0
while True:
entry = int(input('Enter test score:'))
if entry ==0:
break
total += entry
counter += 1
average = (total/counter)
print("The average score:",format(average, '.3f'),'%',sep='')