我正在尝试创建一个直方图,其中两个骰子滚动了一百次,两个卷都添加在一起,然后添加到列表中,该列表进入直方图
def roll_hundred():
b = []
my_lover = range(101)
my_lover1 = 1
for my_lover1 in my_lover:
if my_lover1 < 101:
dice1 = random.randint(1,6)
dice2 = random.randint(1,6)
m = dice2 + dice1
b += m
my_lover1 += 1
print (b)
plt.hist(b)
plt.show()
答案 0 :(得分:2)
出现错误的原因是您尝试将int m
添加到列表b
。要在列表中放置值,您需要使用b.append(m)
附加此值。
此外,您在第一次迭代后调用plt.hist()
。您需要在for循环之外移动此plt.show()
因此您的代码看起来像:
def roll_hundred():
b = []
my_lover = range(101)
my_lover1 = 1
for my_lover1 in my_lover:
if my_lover1 < 101:
dice1 = random.randint(1,6)
dice2 = random.randint(1,6)
m = dice2 + dice1
b.append(m)
my_lover1 += 1
plt.hist(b)
plt.show()
roll_hundred()
这给出了数字:
Python值可读性。您的代码越容易阅读,就越好(通常)。正如@roganjosh在评论中所说,你可以删除代码中的很多变量,使其更具可读性。您可以(如果您愿意)执行以下操作:
def roll_hundred():
b = []
for i in range(100):
dice1 = random.randint(1,6)
dice2 = random.randint(1,6)
m = dice2 + dice1
b.append(m)
plt.hist(b)
plt.show()
roll_hundred()
答案 1 :(得分:0)
我还无法添加评论,所以这是尝试回答/评论。
首先,我注意到你正在把b变成一个空列表。稍后在代码中,您尝试将int添加到列表中。这会导致确切的错误。要测试这个,只需打开python的解释器并尝试
b = []
b += 1
你会得到错误。
从我看到的,尝试拨打
b.append()
代替。
编辑:在我发布之前,似乎发布了类似的答案。