python编写一段程序,根据分数进行升序排序后,输出学生的数量,成绩的最低分和最高分,成绩为前n名和后n名的同学姓名(n为非负数,当n大于数据行数时,按实际行数输出),以及平均成绩(保留小数点后2位)。
时间: 2023-12-14 13:02:51 浏览: 146
好的,这里是Python程序的实现:
```python
# 读取分数数据
scores = []
with open('scores.txt') as f:
for line in f:
name, score = line.strip().split()
scores.append((name, int(score)))
# 对分数进行升序排序
scores.sort(key=lambda x: x[1])
# 统计学生数量、最低分、最高分和平均分
num_students = len(scores)
min_score = scores[0][1]
max_score = scores[-1][1]
avg_score = sum([score for _, score in scores]) / num_students
# 输出结果
print(f"学生数量:{num_students}")
print(f"最低分:{min_score}")
print(f"最高分:{max_score}")
print(f"平均分:{avg_score:.2f}")
n = int(input("请输入n的值:"))
# 输出前n名同学的姓名
print(f"前{n}名同学的姓名:")
for name, score in scores[:n]:
print(name)
# 输出后n名同学的姓名
print(f"后{n}名同学的姓名:")
for name, score in scores[-n:]:
print(name)
```
程序的输入是一个文件 `scores.txt`,每行包含一个学生的姓名和分数,中间用空格隔开。例如:
```
张三 90
李四 80
王五 85
```
程序的输出包括学生数量、最低分、最高分、平均分、前n名同学的姓名、后n名同学的姓名。其中,n由用户输入。
阅读全文