|
发表于 2021-3-23 10:54:23
|
显示全部楼层
本楼为最佳答案
本帖最后由 qq1151985918 于 2021-3-23 10:55 编辑
楼上大佬说的有道理,所以我又将代码加上了备注,方便楼主学习,如果还有不清楚的地方再问
- # 导入模块 random ,该模块用于随机数,randint很明显就是随机整数
- from random import randint
- # 建立字典 ps ,p 代表键 player ,s 代表值 score
- ps = {}
- # 依次获取选手序号 1 - 100 号
- for player in range(1,101):
- # 建立列表 scores 储存 10 位裁判给出的分数
- scores = []
- # 循环 10 次,每次循环代表一位裁判随机给出分数
- for i in range(10):
- # 将裁判给的分数以随机整数形式储存于 scores 列表
- scores.append(randint(0,10))
- # 对列表 scores 进行排序,便于去掉最高分和最低分
- scores.sort()
- # 求出去掉最高分和最低分之后的平均分数作为最终得分
- score = sum(scores[1:-1])/8
- # 将选手序号 和 最终得分以字典形式储存
- ps[player] = score
- print("第%d位选手得分为:"%player, *scores)
- print("去掉最高分%d,去掉最低分%d,最终得分为%.2f\n"%(scores[-1],scores[0],score))
- # 对字典按照以 value (score)的大小排序,以元组(player,score)形式
- pslist = sorted(ps.items(),key = lambda x:x[1])
- print("第一名选手为%d号选手,最终得分为%.2f"%(pslist[-1][0],pslist[-1][-1]))
- print("第二名选手为%d号选手,最终得分为%.2f"%(pslist[-2][0],pslist[-2][-1]))
- print("第三名选手为%d号选手,最终得分为%.2f"%(pslist[-3][0],pslist[-3][-1]))
复制代码 |
|