鱼C论坛

 找回密码
 立即注册
查看: 1811|回复: 9

[已解决]求大佬帮忙 骰子模拟器

[复制链接]
发表于 2020-11-23 14:52:37 | 显示全部楼层 |阅读模式

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

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

x
制作一个骰子模拟器,并检查模拟性能。
从标准输入输入掷骰子的模拟次数,然后模拟掷骰子。逐行打印骰子每个面的计数数。示例输入和输出如下。
此外,您必须输出重复掷骰子结果的平均值(平均值),其格式类似于0.00。
您可以使用random.randint()来生成(伪)随机数。从输入中,给出了一个非负整数。
如果输入0,程序必须成功完成。对于输出的每一行,在':'和计数数之间需要一个空格。

输入:
10
0
输出
1: 3
2: 1
3: 2
4: 0
5: 1
6: 3
Mean: 3.40
最佳答案
2020-11-23 17:36:49
Tac 发表于 2020-11-23 17:21
输入10或者0都报错是为什么啊?

报错是因为0次的话除以0报错
import random

times = int(input())
a=1
while a!=0:
    a=int(input())

lst = [random.randint(1,6) for i in range(times)]

try:
    mean = sum(lst)/times
except:
    mean = 0

for i in range(1,7):
    
    print('%s: %s'%(i,lst.count(i)))
    
print('Mean: %.2f'%mean)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-23 15:31:47 | 显示全部楼层
看错了。。。。编辑中。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 16:07:12 | 显示全部楼层
本帖最后由 逃兵 于 2020-11-23 16:23 编辑
import random

times=int(input('骰子次数:'))

lst = [random.randint(1,6) for i in range(times)]

mean = sum(lst)/times

for i in range(1,7):
    
    print('%s: %s'%(i,lst.count(i)))
    
print('Mean: %.2f'%mean)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 16:21:14 | 显示全部楼层
输入0必须完成是什么意思?
import random

def run(n):
    count=[]
    for i in range(n):
        count.append(random.randint(1,6))
    
    for k in set(count):
        print(f'{k}: {count.count(k)}')
        
    print(f'Mean: {sum(count)/len(count)}')

run(int(input("输入测试次数:")))

    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 16:54:58 | 显示全部楼层
大裤衩子 发表于 2020-11-23 16:21
输入0必须完成是什么意思?

就是输入为0时要可以成功运行,还有平均值要求保留两位小数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 16:57:07 | 显示全部楼层

输入为0时要求可以成功运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 17:14:09 | 显示全部楼层
Tac 发表于 2020-11-23 16:57
输入为0时要求可以成功运行
import random

a=int(input(''))

while a!=0:
    times = a
    a=int(input(''))
    

lst = [random.randint(1,6) for i in range(times)]

mean = sum(lst)/times

for i in range(1,7):
    
    print('%s: %s'%(i,lst.count(i)))
    
print('Mean: %.2f'%mean)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 17:21:11 | 显示全部楼层

输入10或者0都报错是为什么啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 17:36:49 | 显示全部楼层    本楼为最佳答案   
Tac 发表于 2020-11-23 17:21
输入10或者0都报错是为什么啊?

报错是因为0次的话除以0报错
import random

times = int(input())
a=1
while a!=0:
    a=int(input())

lst = [random.randint(1,6) for i in range(times)]

try:
    mean = sum(lst)/times
except:
    mean = 0

for i in range(1,7):
    
    print('%s: %s'%(i,lst.count(i)))
    
print('Mean: %.2f'%mean)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 17:43:26 | 显示全部楼层
本帖最后由 Tac 于 2020-11-23 17:44 编辑
逃兵 发表于 2020-11-23 17:36
报错是因为0次的话除以0报错


多谢 懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 14:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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