有n个学生,每个学生的数据包括学号,姓名, 三门课成绩,平均成绩。编写一个python程序,完成以 下功能: (1)输入一个正整数n下面n行输入n个学生的学号,姓名,和三门 课成绩; (2)计算每个学生的平均成绩并输出所有学生根据平均分从高到低排序后 的数据(包括该学生的学号,姓名,平均分(保留两位小数)) 输入样例 3 101 Zhang 78 87 85 102 Wang 91 88 90 103 Li 75 90 84 输出样例: 102,Wang,89.67 101,Zhang,83.33 103,Li,83.00
时间: 2023-12-26 12:26:46 浏览: 183
可以使用以下的Python代码来实现:
```python
n = int(input())
students = []
for i in range(n):
data = input().split()
sid, name, scores = data[0], data[1], list(map(int, data[2:]))
avg_score = sum(scores) / 3
students.append((sid, name, avg_score))
students = sorted(students, key=lambda x: x[2], reverse=True)
for student in students:
print("{},{},{:.2f}".format(student[0], student[1], student[2]))
```
首先读入学生人数 n,然后循环 n 次,每次读入一行学生数据,并将其添加到一个列表中。对于每个学生,我们将其三门成绩求和并除以 3 得到平均成绩。最后,我们使用 sorted 函数根据学生平均成绩从高到低排序,并逐个输出每个学生的数据。
上述代码可以满足输入输出样例的要求。
相关问题
有n个学生,每个学生的数据包括学号,姓名, 三门课成绩,平均成绩。编写一个python程序,完成以 下功能: (1)输入一个正整数n下面n行输入n个学生的学号,姓名,和三门 课成绩; (2)计算每个学生的平均成绩并输出所有学生根据平均分从高到低排序后 的数据(包括该学生的学号,姓名,平均分(保留两位小数))
可以使用字典来保存每个学生的数据,然后计算平均分并排序输出。以下是实现代码:
```python
n = int(input("请输入学生人数:"))
students = []
for i in range(n):
print(f"请输入第{i+1}个学生的信息:")
student = {}
student['学号'] = input("学号:")
student['姓名'] = input("姓名:")
student['成绩1'] = float(input("成绩1:"))
student['成绩2'] = float(input("成绩2:"))
student['成绩3'] = float(input("成绩3:"))
student['平均分'] = round((student['成绩1'] + student['成绩2'] + student['成绩3']) / 3, 2)
students.append(student)
students = sorted(students, key=lambda x: x['平均分'], reverse=True)
print("按平均分从高到低排序后的学生信息:")
for student in students:
print(f"学号:{student['学号']},姓名:{student['姓名']},平均分:{student['平均分']}")
```
运行程序后,可以按照提示输入学生信息,最后输出按平均分从高到低排序后的学生信息。
帮我写个python程序有n个学生,每个学生的数据包括学号,姓名, 三门课成绩,平均成绩。编写一个程序,完成以 下功能: (1)第一行输入一个正整数n,下面n行n个学生的学号,姓名,和三门 课成绩; (2)计算每个学生的平均成绩并输出所有学生从高到低排序后 的数据(包括该学生的学号,姓名,平均分(保留两位小数)
以下是一个简单的 Python 程序,可以实现你所需的功能:
```python
n = int(input("请输入学生人数:"))
students = []
for i in range(n):
stu = input("请输入第{}个学生的信息(学号、姓名、成绩1、成绩2、成绩3,用空格隔开):".format(i+1)).split()
stu_num, stu_name, score1, score2, score3 = stu
score1, score2, score3 = float(score1), float(score2), float(score3)
avg_score = round((score1 + score2 + score3) / 3, 2)
students.append((stu_num, stu_name, avg_score))
students.sort(key=lambda x: x[2], reverse=True)
print("所有学生的数据(按平均分从高到低排序):")
for stu in students:
print("{}\t{}\t{}".format(stu[0], stu[1], stu[2]))
```
程序运行时,会首先要求输入学生人数,然后逐个输入每个学生的信息。程序会计算每个学生的平均成绩,并将所有学生数据按平均分从高到低排序后输出。
注意:这个程序没有做输入的校验,输入不符合要求的数据可能会导致程序崩溃。建议在实际使用时加入相应的校验机制。
阅读全文