【发布时间】:2020-06-09 06:47:17
【问题描述】:
我是一个完整的初学者,这是我向社区提出的第一个问题。
我正在学习循环,我正在尝试在 Python 中创建一个程序,该程序允许我计算由 m 个面的 n 个骰子滚动产生的总和的频率。变量 n 和 m 应由用户输入。我知道你一定已经多次看到这个问题,但我找不到我的解决方案的正确答案,可能是因为我迄今为止构建代码的方式:
import numpy as np
sums = []
frequency = []
probability = []
lst = []
n = int(input("Enter the number of dice: "))
m = int(input("Enter the number of faces in the dice: "))
lst = list(range(m + 1)[1:])
print(lst)
for item in (lst):
for x in (lst):
sums.append(item+x)
counter = len(sums)
for item in (sums):
frequency.append(sums.count(item))
for item in frequency:
probability.append(item/counter)
probability = ['%.3f' % elem for elem in probability]
results = np.column_stack((sums, probability))
new_results = [tuple(row) for row in results]
uniques = np.unique(new_results, axis=0)
print(uniques)
这就是结果(如您所见,它目前仅适用于 2 个骰子):
[['10' '0.083']
['11' '0.056']
['12' '0.028']
['2' '0.028']
['3' '0.056']
['4' '0.083']
['5' '0.111']
['6' '0.139']
['7' '0.167']
['8' '0.139']
['9' '0.111']]
我陷入了以下两个问题:
- 我很难理解如何为 n 骰子重复循环。我认为我设计程序的方式在这个意义上使事情变得困难。你能帮忙吗?
- 如何以正确的方式订购输出?我希望结果如下:
[['2' '0.028']
['3' '0.056']
['4' '0.083']
['5' '0.111']
['6' '0.139']
['7' '0.167']
['8' '0.139']
['9' '0.111']
['10' '0.083']
['11' '0.056']
['12' '0.028']]
如果您能帮助我解决这些问题,我将不胜感激。此外,任何改进我的代码的建议都会很棒! 谢谢, 马可
【问题讨论】:
-
对于第二点,尝试对数组进行排序(使用每个列表的第一个元素作为键),然后将其打印出来
标签: python loops for-loop dice