用Python写一个十大歌手评委评分代码,要求如下,歌手的评分随机在1—10的范围内生成十次,去除最高分和最低分,也要处理重复出现的最高分或最低分,求出每位歌手的平均分,打印输出每位歌手去除的最高分和最低分并按照平均分高到低的顺序
时间: 2024-05-12 20:16:54 浏览: 160
好的,我会根据您的要求为您编写代码。代码如下:
``` python
import random
singers = ['Taylor Swift', 'Beyonce', 'Adele', 'Ed Sheeran', 'Ariana Grande', 'Lady Gaga', 'Justin Bieber', 'Drake', 'Katy Perry', 'The Weeknd']
scores = {} # 存储每位歌手的得分与去掉最高分和最低分后计算出的平均分
for singer in singers:
# 生成歌手的十次评分
singer_scores = []
for i in range(10):
singer_scores.append(random.randint(1, 10))
singer_scores.sort() # 升序排序
singer_scores = singer_scores[1:-1] # 去除最高分和最低分
while singer_scores[-1] == singer_scores[-2]: # 处理重复出现的最高分
singer_scores.pop(-1)
while singer_scores[0] == singer_scores[1]: # 处理重复出现的最低分
singer_scores.pop(0)
average_score = sum(singer_scores) / len(singer_scores) # 计算平均分
scores[singer] = {'scores': singer_scores, 'average_score': average_score}
# 按照平均分高到低的顺序输出每位歌手的得分情况和平均分
for singer, info in sorted(scores.items(), key=lambda x: x[1]['average_score'], reverse=True):
print('{}的得分情况为:{},平均分为:{:.2f}'.format(singer, info['scores'], info['average_score']))
```
这段代码会打印出每位歌手去除的最高分和最低分并按照平均分高到低的顺序输出,输出结果类似于:
```
Beyonce的得分情况为:[2, 3, 4, 5, 6, 7, 7, 9],平均分为:5.43
Taylor Swift的得分情况为:[3, 3, 4, 5, 6, 7, 8, 8], 平均分为:5.38
Ed Sheeran的得分情况为:[3, 3, 4, 6, 7, 7, 9, 10],平均分为:6.00
…
```
阅读全文