📜  练习 5.2.8:平均测试分数 (1)

📅  最后修改于: 2023-12-03 15:11:37.751000             🧑  作者: Mango

练习 5.2.8:平均测试分数

本练习要求编写一个程序,用于计算学生的平均测试分数。程序的输入为一组正整数,代表学生在每个测试中的得分,程序需要计算这些得分的平均值。

程序设计

程序的基本逻辑如下:

  1. 初始化计数器和总分数为 0;
  2. 读入学生的测试分数,将当前测试分数加到总分数上,计数器加 1;
  3. 如果还有测试分数需要读入,则重复步骤 2;
  4. 计算平均分数,输出结果。

代码实现如下:

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
未输入任何测试分数!

这次程序正确输出了提示信息,不会再出错了。

总结

本次练习主要介绍了如何编写一个简单的计算平均测试分数的程序,涉及到了列表、循环和字符串格式化等知识点。学习完本练习后,大家就掌握了如何给程序添加一定的输入检查和异常处理,以保证程序的正确性和可靠性。