用Python编写键盘输入10组数,形成一个字典,存放姓名和成绩对。(1)将字典中的数据写入一个文件(要求说明采用的具体的读写模式,否则不得分)。(2)要求代码具有异常处理功能,比如能确保成绩的输入是数字;控制文件读写的错误。(3)读入存有成绩的文件中的内容(要求说明采用的是哪种读写模式,否则不得分),先添加2个新的成绩,再按成绩给出排行榜。(4)统计不及格的人数和输出他们的姓名成绩对信息。
时间: 2024-03-04 17:49:06 浏览: 44
以下是代码实现:
```python
import os
# 定义一个字典
scores_dict = {}
# 键盘输入10组数,形成一个字典,存放姓名和成绩对
for i in range(10):
name = input("请输入姓名:")
while True:
try:
score = float(input("请输入成绩:"))
break
except ValueError:
print("成绩输入错误,请重新输入!")
scores_dict[name] = score
# 将字典中的数据写入一个文件
with open("scores.txt", "w") as f:
for name, score in scores_dict.items():
f.write(f"{name}:{score}\n")
# 读入存有成绩的文件中的内容,先添加2个新的成绩
with open("scores.txt", "a+") as f:
f.write("Tom:89\nJerry:77\n")
f.seek(0)
for line in f:
name, score = line.strip().split(":")
scores_dict[name] = float(score)
# 按成绩给出排行榜
sorted_scores = sorted(scores_dict.items(), key=lambda x: x[1], reverse=True)
print("排行榜:")
for i, (name, score) in enumerate(sorted_scores):
print(f"{i+1}. {name}: {score}")
# 统计不及格的人数和输出他们的姓名成绩对信息
failed_list = []
for name, score in scores_dict.items():
if score < 60:
failed_list.append((name, score))
if failed_list:
print("不及格名单:")
for name, score in failed_list:
print(f"{name}: {score}")
else:
print("没有不及格的人。")
```
代码说明:
1. 键盘输入10组数,形成一个字典,存放姓名和成绩对。
2. 将字典中的数据写入一个文件,采用写入模式"w"。
3. 读入存有成绩的文件中的内容,先添加2个新的成绩,采用追加模式"a+"。
4. 按成绩给出排行榜。
5. 统计不及格的人数和输出他们的姓名成绩对信息。