【问题描述】 假定一个文本文件中包含未指定个数的考试分数,请编写一个程序, 从文件中读取分数,以列表的方式打印输出所有的分数,同时计算分数之和,平均数(保留两位小数),以及最大分数。 文件中的分数用空格分隔,可能有多行。 【输入形式】 scores.txt文件 【输出形式】 分数列表 分数之和
时间: 2024-03-24 17:38:59 浏览: 163
读取考试成绩文件,求最大值、最小值,并排序
好的,以下是 Python 代码实现:
```python
with open('scores.txt', 'r') as f:
scores = []
total = 0
max_score = 0
for line in f:
line = line.strip()
if line:
# 将一行分数按空格分隔成多个字符串,再将其转换为 int 类型
line_scores = [int(s) for s in line.split()]
scores += line_scores
total += sum(line_scores)
max_score = max(max_score, max(line_scores))
# 计算平均数
avg_score = round(total / len(scores), 2)
print("分数列表:", scores)
print("分数之和:", total)
print("平均分数:", avg_score)
print("最高分数:", max_score)
```
代码解释:
- `with open('scores.txt', 'r') as f:` 打开文件 `scores.txt` 并将其赋值给变量 `f`,同时使用 `with` 语句可以避免手动关闭文件。
- `scores = []` 定义一个空列表 `scores`,用于存储所有的分数。
- `total = 0` 定义一个变量 `total`,用于存储所有分数的和,初始值为 0。
- `max_score = 0` 定义一个变量 `max_score`,用于存储最大分数,初始值为 0。
- `for line in f:` 遍历文件中的每一行。
- `line = line.strip()` 去除行首和行尾的空格和换行符。
- `if line:` 判断该行是否为空行。
- `line_scores = [int(s) for s in line.split()]` 将一行分数按空格分隔成多个字符串,再使用列表推导式将其转换为 int 类型,存储到 `line_scores` 列表中。
- `scores += line_scores` 将 `line_scores` 列表中的分数添加到 `scores` 列表中。
- `total += sum(line_scores)` 将 `line_scores` 列表中的分数求和并加到 `total` 变量中。
- `max_score = max(max_score, max(line_scores))` 比较 `line_scores` 列表中的最大值和 `max_score` 变量中的值,取二者的最大值作为新的 `max_score` 值。
- `avg_score = round(total / len(scores), 2)` 计算平均数,使用 `round()` 函数保留两位小数。
- 最后使用 `print()` 函数输出结果。
注意:在运行代码前需要先将需要统计的分数内容保存到 `scores.txt` 文件中。
阅读全文