调用函数时,'int'对象不可调用

时间:2012-11-15 21:51:01

标签: python int callable dice

我是一名业余程序员,正在使用控制台骰子滚轮,比传统的骰子滚轮复杂得多。到目前为止,我遇到了这个功能的问题:

  def multiRoll(dice, amount):
        total = 0
        rolls = []
    for roll in range(amount):
        rolls += roll(dice)
    total = sum(rolls)
    return total, rolls

意味着从字典中获取单个条目,描述骰子的类型(4,6,8个面等)及其索引和掷骰子的时间。然后它根据需要滚动骰子,然后将每个结果添加到一个列表中,稍后将对其进行求和。

但显然助焊剂出错了,当它到达这条线时:

        rolls += roll(dice)

我得'int'对象不可调用

请你告诉我如何克服这个问题?

如果你对roll()函数有任何疑问,请点击这里:

def roll(dice):
    if dice < 1:
            print "I found a problem when trying to roll a d%d" % (dice)
            return "Failed"
    else:
            return randrange(1, dice)

3 个答案:

答案 0 :(得分:1)

for roll in range(amount):
        rolls += roll(dice)

roll(dice)未使用您的函数,而是roll循环的for变量。您应该将循环的变量更改为:

for number in range(amount):
    rolls += roll(dice) 

或类似的东西。

答案 1 :(得分:0)

您已在

中重新分配roll
for roll in range(amount):
        rolls += roll(dice)

将其替换为另一个变量名称:

for r in range(amount):
        rolls += roll(dice)

答案 2 :(得分:0)

在这一行:

for roll in range(amount):
    rolls += roll(dice)

您正在创建一个名为roll的局部变量,该变量将覆盖您在程序中定义的函数roll
您需要做的是更改函数名称或局部变量名称,使它们不相同。