直方图错误:“int”对象不是iterab

2024-09-30 20:19:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着创建一个直方图,两个骰子掷一百次,两个骰子加在一起,然后加在一个列表中,这个列表就变成了直方图

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()

Tags: 列表mydefrangepltrandom直方图骰子
2条回答

我还不能添加评论,所以这里尝试回答/评论。在

首先,我注意到你把b列为一个空列表。在后面的代码中,您尝试向列表中添加一个int。这会导致准确的错误。要测试这一点,只需打开python的解释器并尝试

b = []
b += 1

你就会得到错误。在

据我所见,试着打电话

^{pr2}$

相反。在

编辑:看起来在我发布之前也有类似的答案。在

出现错误是因为您正试图将int m添加到列表b。为了在列表中放入一个值,您需要使用b.append(m)来附加这个值。在

另外,在第一次迭代之后调用plt.hist()。您需要将它和plt.show()移出for循环

因此,您的代码如下所示:

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()

得出的数字是:

enter image description here

Python重视可读性。你的代码越容易阅读,它就越好(一般来说)。正如@roganjosh在评论中所说,您可以删除代码中的许多变量,使其更具可读性。您可以(如果您愿意)执行以下操作:

^{pr2}$

相关问题 更多 >