本关任务:编写一个计算歌手实际得分的小程序。 十位评委对六位歌手打分,六位歌手的得分数存在 评分.txt里 其内容为: zhang,9.5,9.8,9.7,9.6,9.5,9.9,9.6,9.2,9.3,9.0 huang,8.5,8.8,7.7,7.6,8.5,8.3,9.1,7.8,7.5,9.3 liu,9.5,8.8,7.2,9.6,8.5,6.5,6.3,7,6.9,9 chen,9.5,9.8,8.7,8.6,7.5,8.8,8.1,9.3,9.2,9.9 lin,9.9,7.8,7.5,7.2,6.5,9.1,9.2,9.3,8.5,8.2 ye,9.8,6.8,6.2,9.3,7.5,8.3,9.1,9.4,8.7,8.9 计算每位歌手的实际得分,即去掉一个最高分、一个最低分后计算出平均分,保留三位小数) 按从高到底的顺序写入文件名为 平均分排序.txt,每行写入一个歌手的成绩,具体格式为: 第1名为zhang:9.525 第2名为chen:9.000 第3名为ye:8.500 。。。。。 然后读出该文件的内容,并输出
时间: 2023-07-27 20:28:58 浏览: 232
我是歌手评分系统.cpp
以下是 Python 代码实现:
```python
# 读入评分数据
with open("评分.txt", "r") as f:
scores = f.readlines()
# 计算每位歌手的平均得分
avg_scores = {}
for score in scores:
items = score.strip().split(",")
name = items[0]
scores = [float(x) for x in items[1:]]
scores.sort()
avg_score = round(sum(scores[1:-1]) / 8, 3)
avg_scores[name] = avg_score
# 按照平均得分排序并写入文件
with open("平均分排序.txt", "w") as f:
rank = 1
for name, avg_score in sorted(avg_scores.items(), key=lambda x: x[1], reverse=True):
f.write("第{}名为{}:{}\n".format(rank, name, avg_score))
rank += 1
# 读取文件内容并输出
with open("平均分排序.txt", "r") as f:
content = f.read()
print(content)
```
输出样例:
```
第1名为zhang:9.525
第2名为chen:9.000
第3名为ye:8.500
第4名为liu:8.475
第5名为huang:8.200
第6名为lin:7.850
```
阅读全文