我是一名业余程序员,正在使用控制台骰子滚轮,比传统的骰子滚轮复杂得多。到目前为止,我遇到了这个功能的问题:
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)
答案 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
。
您需要做的是更改函数名称或局部变量名称,使它们不相同。