1

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

  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' object is not callable

你能告诉我如何克服这个吗?

如果你对 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)
4

3 回答 3

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

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

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

或类似的东西。

于 2012-11-15T21:53:09.353 回答
0

您已重新分配roll

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

用另一个变量名替换它:

for r in range(amount):
        rolls += roll(dice)
于 2012-11-15T21:53:17.163 回答
0

在此行中:

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

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

于 2012-11-15T21:54:20.230 回答