python随机数,这题谁会啊?
本帖最后由 Tulubi 于 2021-3-23 00:48 编辑学校举办朗读比赛,邀请了10位评委为100位参赛选手的表现打分。
10位评委为每位选手的打分为随机生成(0-10分),
根据以下规则计算该参赛选手的最终得分:
(1)去掉一个最高分;
(2)去掉一个最低分;
(3)最终得分为剩下分数的平均值。
计算每位参赛选手的最终得分后,给出前三名选手的成绩。 这个题目该怎么做呀~? from random import randint
ps = {}
for player in range(1,101):
scores = []
for i in range(10):
scores.append(randint(0,10))
scores.sort()
score = sum(scores)/8
ps = score
print("第%d位选手得分为:"%player, *scores)
print("去掉最高分%d,去掉最低分%d,最终得分为%.2f\n"%(scores[-1],scores,score))
pslist = sorted(ps.items(),key = lambda x:x)
print("第一名选手为%d号选手,最终得分为%.2f"%(pslist[-1],pslist[-1][-1]))
print("第二名选手为%d号选手,最终得分为%.2f"%(pslist[-2],pslist[-2][-1]))
print("第三名选手为%d号选手,最终得分为%.2f"%(pslist[-3],pslist[-3][-1]))
最好说下是哪一方面不会,是不知道有random模块产生随机数还是说对产生最终得分的方法没思路,要不然别人直接把最终代码丢给你可能没有注释或者和你当前学到的知识有点超纲也是抓瞎的。 本帖最后由 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)/8
# 将选手序号 和 最终得分以字典形式储存
ps = score
print("第%d位选手得分为:"%player, *scores)
print("去掉最高分%d,去掉最低分%d,最终得分为%.2f\n"%(scores[-1],scores,score))
# 对字典按照以 value (score)的大小排序,以元组(player,score)形式
pslist = sorted(ps.items(),key = lambda x:x)
print("第一名选手为%d号选手,最终得分为%.2f"%(pslist[-1],pslist[-1][-1]))
print("第二名选手为%d号选手,最终得分为%.2f"%(pslist[-2],pslist[-2][-1]))
print("第三名选手为%d号选手,最终得分为%.2f"%(pslist[-3],pslist[-3][-1]))
Hoiste 发表于 2021-3-23 10:32
最好说下是哪一方面不会,是不知道有random模块产生随机数还是说对产生最终得分的方法没思路,要不然别人直 ...
谢谢你的建议,我的思路没搞明白,把空列表建在循环的最外边 qq1151985918 发表于 2021-3-23 10:54
楼上大佬说的有道理,所以我又将代码加上了备注,方便楼主学习,如果还有不清楚的地方再问
感谢大佬的讲解,受益匪浅,我会加倍努力的!鱼C论坛,真的很适合学习!
页:
[1]