文件studentscore.txt包含了学生在期末考试中的成绩。编写一段程序,根据分数进行升序排序后,输出学生的数量,成绩的最低分和最高分,成绩为前n名和后n名的同学姓名(n为非负数,当n大于数据行数时,按实际行数输出),以及平均成绩(保留小数点后2位)。
时间: 2024-01-02 08:04:33 浏览: 129
StudentScore_输入与输出_
3星 · 编辑精心推荐
好的,这是一个比较复杂的问题,需要用到文件读取、排序、列表切片等操作。下面是一个Python的实现:
```python
# 读取文件
scores = []
with open('studentscore.txt', 'r') as f:
lines = f.readlines()
for line in lines:
name, score = line.strip().split()
scores.append((name, int(score)))
# 排序
scores.sort(key=lambda x: x[1])
# 输出数量、最低分和最高分
n = len(scores)
if n > 0:
print('学生数量:', n)
print('最低分:', scores[0][1])
print('最高分:', scores[-1][1])
# 输出前n名和后n名的同学姓名
n = int(input('请输入n:'))
if n > 0:
top_n = scores[:n]
bottom_n = scores[-n:]
print('前{}名同学:'.format(n))
for i, s in enumerate(top_n):
print('第{}名:{}'.format(i+1, s[0]))
print('后{}名同学:'.format(n))
for i, s in enumerate(bottom_n):
print('第{}名:{}'.format(n-i, s[0]))
# 输出平均成绩
if n > 0:
avg_score = sum([s[1] for s in scores]) / n
print('平均成绩:{:.2f}'.format(avg_score))
```
这段代码首先读取文件,并将每行数据转化为一个元组,放入列表中。然后使用`sort`方法对列表进行排序。接着输出学生数量、最低分和最高分。然后根据用户输入的n,输出前n名和后n名的同学姓名。最后计算平均成绩并输出。
阅读全文