【发布时间】:2014-11-10 22:18:30
【问题描述】:
编写一个名为
distribution_of_rolls的函数,它接受一个数字—— 掷两个骰子的次数 - 并以如下所示的形式打印这些掷骰的值的分布。
例如:Distribution of dice rolls 2: 7 ( 3.5%) ******* 3: 14 ( 7.0%) ************** 4: 15 ( 7.5%) *************** 5: 19 ( 9.5%) ******************* 6: 24 (12.0%) ************************ 7: 35 (17.5%) *********************************** 8: 24 (12.0%) ************************ 9: 28 (14.0%) **************************** 10: 18 ( 9.0%) ****************** 11: 9 ( 4.5%) ********* 12: 7 ( 3.5%) ******* ----------------------------- 200 rolls
我的代码在某处是错误的。无法打印出来。
def roll():
return randrange(1,7) + randrange(1,7)
def distribution_of_rolls(n:int):
result=({i,0} for i in range(2,13,1))
c=''
result=list(result)
for i in range(n):
a = roll()
print(a)
result[a]= result[a] + 1
print(result)
for i in range(2,13,1):
b=(result[i]/float(n)) * 100
for i in range(int(math.floor(n))):
c = c + '*'
d = "{0:0.1f}%".format(b)
print("{0:2d}: {1:5d} ({2:s}) {3:s}".format(i, result[i], d, c)
print("-------------------------")
print("{0:10d} rolls".format(n))
distribution_of_rolls(20)
【问题讨论】:
-
您可能想要
result = {i: 0 for i in range(2, 13)},或者将您当前的通话包含在dict(...)中。现在,result是一个生成器,这可能是您(未公开)问题的原因。如果您想要比这更好,您需要告诉我们实际出了什么问题。
标签: python python-3.4