鱼C论坛

 找回密码
 立即注册
查看: 2199|回复: 6

[已解决]python随机数,这题谁会啊?

[复制链接]
发表于 2021-3-23 00:37:25 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Tulubi 于 2021-3-23 00:48 编辑

学校举办朗读比赛,邀请了10位评委为100位参赛选手的表现打分。

10位评委为每位选手的打分为随机生成(0-10分),

根据以下规则计算该参赛选手的最终得分:  

(1)去掉一个最高分;  

(2)去掉一个最低分;  

(3)最终得分为剩下分数的平均值。

计算每位参赛选手的最终得分后,给出前三名选手的成绩。
最佳答案
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]))    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-3-23 00:38:13 From FishC Mobile | 显示全部楼层
这个题目该怎么做呀~?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-23 08:31:15 | 显示全部楼层
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[1:-1])/8
    ps[player] = score
    print("第%d位选手得分为:"%player, *scores)
    print("去掉最高分%d,去掉最低分%d,最终得分为%.2f\n"%(scores[-1],scores[0],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]))    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-23 10:32:50 | 显示全部楼层
最好说下是哪一方面不会,是不知道有random模块产生随机数还是说对产生最终得分的方法没思路,要不然别人直接把最终代码丢给你可能没有注释或者和你当前学到的知识有点超纲也是抓瞎的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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]))    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-23 19:12:12 From FishC Mobile | 显示全部楼层
Hoiste 发表于 2021-3-23 10:32
最好说下是哪一方面不会,是不知道有random模块产生随机数还是说对产生最终得分的方法没思路,要不然别人直 ...

谢谢你的建议,我的思路没搞明白,把空列表建在循环的最外边
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-23 19:13:48 From FishC Mobile | 显示全部楼层
qq1151985918 发表于 2021-3-23 10:54
楼上大佬说的有道理,所以我又将代码加上了备注,方便楼主学习,如果还有不清楚的地方再问

感谢大佬的讲解,受益匪浅,我会加倍努力的!鱼C论坛,真的很适合学习!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 05:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表