用python 编写一个程序,用户输入若干学生的姓名及任意数量的科目成绩,程序统计每个科目的最高分,并输出每科成绩的最高分以及对应的学生姓名。此外,程序还输出总分最高的学生及其总分。
时间: 2024-10-27 20:14:51 浏览: 15
你可以使用Python的字典和列表数据结构来编写这个程序。下面是一个简单的示例:
```python
def get_student_scores():
students = {} # 创建一个空字典存储学生信息
while True:
name = input("请输入学生姓名(输入'q'退出):")
if name == 'q':
break
scores = {}
num_subjects = int(input(f"{name},请输入你要输入的成绩的数量:"))
for i in range(num_subjects):
subject = input(f"请输入第{i+1}门课程的名称:")
score = float(input(f"请输入{subject}的成绩:"))
scores[subject] = score
students[name] = scores # 将学生和他们的成绩添加到字典中
max_score_dict = {key: max(value.values()) for key, value in students.items()} # 计算每科最高分
max_total = max(sum(scores.values()) for scores in students.values()) # 计算总分最高的学生总分
print("\n每科成绩的最高分及对应学生姓名:")
for subject, highest_score in max_score_dict.items():
for student, their_scores in students.items():
if their_scores.get(subject) == highest_score:
print(f"{subject}: 最高分为{highest_score}, 学生姓名:{student}")
print(f"\n总分最高的学生是:{students[max(max_score_dict, key=max_score_dict.get)]},总分为:{max_total}")
get_student_scores()
```
在这个程序中,我们首先创建了一个空字典`students`来存储每个学生及其各科成绩。然后通过循环不断获取新学生的信息和成绩,直到用户输入'q'为止。接着,我们计算出每科的最高分并找出总分最高的学生。最后,我们将结果打印出来。
如果你运行此程序,它会提示用户输入学生姓名、成绩数量和每个科目成绩,然后按照要求输出统计结果。
阅读全文