📅  最后修改于: 2023-12-03 15:11:37.751000             🧑  作者: Mango
本练习要求编写一个程序,用于计算学生的平均测试分数。程序的输入为一组正整数,代表学生在每个测试中的得分,程序需要计算这些得分的平均值。
程序的基本逻辑如下:
代码实现如下:
scores = []
n = int(input("请输入测试数目:"))
for i in range(n):
score = int(input("请输入第 %d 个测试分数:" % (i + 1)))
scores.append(score)
avg_score = sum(scores) / n
print("平均测试分数为:%.2f" % avg_score)
程序首先读入测试的个数 n
,然后利用 for
循环读入每个测试分数,将其添加到 scores
列表中。使用 sum
函数计算总分数,然后除以测试数目即可得到平均分数。
在输出结果时使用字符串格式化,保留两位小数。
我们来测试一下程序的功能。假设我们要计算 3 个测试的平均分数,分别得到成绩 80、86 和 92 分,那么我们应该这样输入和运行程序:
请输入测试数目:3
请输入第 1 个测试分数:80
请输入第 2 个测试分数:86
请输入第 3 个测试分数:92
平均测试分数为:86.00
程序正确输出了平均分数。我们再试试输入 0 个测试数目,看看程序会不会崩溃:
请输入测试数目:0
Traceback (most recent call last):
File "C:\Users\pyc\Documents\Python Scripts\learn\Python编程实例\5.2\5.2.8.py", line 4, in <module>
score = int(input("请输入第 %d 个测试分数:" % (i + 1)))
ValueError: invalid literal for int() with base 10: ''
程序提示我们输入无效,发生了 ValueError
。这是因为我们的程序在读入测试数目后没有进行检查,如果测试数目为 0,那么就不需要读入测试分数了。为了解决这个问题,我们可以使用 while
循环:
scores = []
n = int(input("请输入测试数目:"))
while n > 0:
score = int(input("请输入第 %d 个测试分数:" % (len(scores) + 1)))
scores.append(score)
n -= 1
if len(scores) > 0:
avg_score = sum(scores) / len(scores)
print("平均测试分数为:%.2f" % avg_score)
else:
print("未输入任何测试分数!")
这里我们在读入测试分数时增加了一个 if
条件判断,如果没有输入任何测试分数则输出提示信息。运行程序,测试一下:
请输入测试数目:0
未输入任何测试分数!
这次程序正确输出了提示信息,不会再出错了。
本次练习主要介绍了如何编写一个简单的计算平均测试分数的程序,涉及到了列表、循环和字符串格式化等知识点。学习完本练习后,大家就掌握了如何给程序添加一定的输入检查和异常处理,以保证程序的正确性和可靠性。