编写程序,用户输入学号、姓名和成绩(用逗号隔开),按照降序输出学号、姓名和平均成绩。 例如: 请输入学号,姓名和成绩(用逗号隔开):1001,张 三,80 四,100 三,70 四,90 请输入学号,姓名和成绩(用逗号隔开):1002,李 请输入学号,姓名和成绩(用逗号隔开):1001,张 请输入学号,姓名和成绩(用逗号隔开):1002,李 请输入学号,姓名和成绩(用逗号隔开): 1002 三 95.0 1001 李四 75.0
时间: 2024-03-24 20:36:06 浏览: 132
学号和姓名用数组表示-building tools with github customize your workflow 无水印pdf
以下是Python编程实现:
```python
# 定义一个空字典用于存储学生信息
students = {}
# 循环输入学生信息
while True:
info = input("请输入学号,姓名和成绩(用逗号隔开):")
if not info: # 如果输入为空则退出循环
break
parts = info.split(",")
if len(parts) != 3: # 如果输入格式不正确则忽略
continue
sid, name, score = parts[0], parts[1], float(parts[2])
if sid not in students: # 如果该学生不存在,则添加到字典
students[sid] = {"name": name, "scores": [score]}
else: # 如果该学生已存在,则添加成绩到列表
students[sid]["scores"].append(score)
# 计算每个学生的平均成绩
for sid in students:
scores = students[sid]["scores"]
avg_score = sum(scores) / len(scores)
students[sid]["avg_score"] = avg_score
# 按照平均成绩降序排序,输出学生信息
sorted_students = sorted(students.items(), key=lambda x: x[1]["avg_score"], reverse=True)
for sid, info in sorted_students:
name, avg_score = info["name"], info["avg_score"]
print(f"{sid} {name} {avg_score:.1f}")
```
运行程序后,输入学生信息,最后会按照平均成绩降序输出学生信息。
阅读全文