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 面など) とそのインデックスおよびサイコロが振られる回数を説明する辞書から 1 つのエントリを取得することを目的としています。次に、サイコロを必要なだけ転がし、各結果を 1 つのリストに追加して後で合計します。

しかし、どうやら流束がうまくいかず、次の行に達すると:

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

ここのこの行で:

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

プログラムで定義しrollた関数を上書きするというローカル変数を作成しています。 関数名またはローカル変数名のいずれかを変更して、同じにならないようにする必要があります。roll

于 2012-11-15T21:54:20.230 に答える
0

に再割り当てrollしました

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

別の変数名に置き換えます。

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