有5个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程的成绩、平均分数)。要求用一个input函数输入5个学生数据,用一个average函数求总平均分,用max函数找出最高分学生数据。总平均分和最高分的学生的数据都在主函数中输出。
时间: 2023-12-15 22:31:37 浏览: 67
好的,我会帮你解决这个问题。
以下是完整的代码:
```python
def input_students():
students = []
for i in range(5):
student = {}
student['id'] = input("请输入第{}个学生的学号:".format(i+1))
student['name'] = input("请输入第{}个学生的姓名:".format(i+1))
student['score1'] = float(input("请输入第{}个学生的第一门成绩:".format(i+1)))
student['score2'] = float(input("请输入第{}个学生的第二门成绩:".format(i+1)))
student['score3'] = float(input("请输入第{}个学生的第三门成绩:".format(i+1)))
students.append(student)
return students
def average(students):
sum_score1 = 0
sum_score2 = 0
sum_score3 = 0
for student in students:
sum_score1 += student['score1']
sum_score2 += student['score2']
sum_score3 += student['score3']
avg_score1 = sum_score1 / len(students)
avg_score2 = sum_score2 / len(students)
avg_score3 = sum_score3 / len(students)
return avg_score1, avg_score2, avg_score3
def max_student(students):
max_score = 0
max_student = {}
for student in students:
score_sum = student['score1'] + student['score2'] + student['score3']
if score_sum > max_score:
max_score = score_sum
max_student = student
return max_student
def main():
students = input_students()
avg_score1, avg_score2, avg_score3 = average(students)
max_student_data = max_student(students)
print("三门课的平均成绩分别为:{:.2f},{:.2f},{:.2f}".format(avg_score1, avg_score2, avg_score3))
print("最高分的学生信息如下:")
print("学号:{},姓名:{},第一门成绩:{},第二门成绩:{},第三门成绩:{},平均分数:{:.2f}".format(
max_student_data['id'], max_student_data['name'], max_student_data['score1'], max_student_data['score2'], max_student_data['score3'],
(max_student_data['score1'] + max_student_data['score2'] + max_student_data['score3']) / 3))
if __name__ == '__main__':
main()
```
运行代码后,程序会提示你输入每个学生的学号、姓名和三门课的成绩,然后会输出总平均分和最高分的学生的信息。注意,程序中的成绩都是浮点数类型,所以输入成绩时需要输入小数。
阅读全文