1

関数を呼び出す関数を作成しようとしています (サイコロを 1000 回振ってリスト [1,2,3,4,5,6] をカウントする roll die() ため、結果は [100,200,100,300,200,100] になる可能性があります)。 x回実行するように指示します。私のコードはそれを何度も何度も印刷しているようです

#simulate rolling a six-sided die multiple tiems, and tabulate the results using a list
import random  #import from the library random so you can generate a random int
def rollDie(): 
    #have 6 variables and set the counter that equals 0
    one = 0  
    two = 0
    three = 0
    four = 0
    five = 0
    six = 0
    #use a for loop to code how many times you want it to run
    for i in range(0,1000):
        #generate a random integer between 1 and 6
        flip = int(random.randint(1,6))
        # the flip variable is the the number you rolled each time
        #Every number has its own counter
        #if the flip is equal to the corresponding number, add one
        if flip == 1:
            one = one + 1
        elif flip == 2:
            two = two + 1
        elif flip == 3:
            three = three + 1
        elif flip == 4:
            four = four + 1
        elif flip == 5:
            five = five + 1
        elif flip == 6:
            six = six + 1
        #return the new variables as a list
    return [one,two,three,four,five,six]

私が問題を抱えている新しい機能は次のとおりです。

def simulateRolls(value):
    multipleGames = rollDie() * value
    return multipleGames

値に 4 を入力すると、このような結果が表示されます

[100,300,200,100,100,200]
[200,300,200,100,100,100]
[100,100,100,300,200,200]
[100,100,200,300,200,100]

誰かが私を正しい方向に導くことができますか?

4

2 に答える 2

1

次のようにして、必要なものを取得できます。

def simulateRolls(value):
    multipleGames = [rollDie() for _ in range(value)]
    return multipleGames

ところで、元の関数は完全に正常に動作しているようですが、興味がある場合は、次のように冗長性を削除できます。

def rollDie(): 
    #have 6 variables and set the counter that equals 0
    results = [0] * 6

    #use a for loop to code how many times you want it to run
    for i in range(0,1000):
        #generate a random integer between 1 and 6
        flip = int(random.randint(1,6))
        # the flip variable is the the number you rolled each time
        results[flip - 1] += 1

    return results
于 2013-10-02T23:06:35.457 に答える
1

この線

multipleGames = rollDie() * value

は一度評価rollDie()し、結果に を掛けvalueます。

代わりに呼び出し時間を繰り返すには、これをvalue行います。

return [rollDie() for i in xrange(value)]

全体を通してリストを操作することで、rollDie 関数を単純化することもできます

import random  #import from the library random so you can generate a random int
def rollDie(): 
    result = [0] * 6
    for i in range(0,1000):
        result[random.randint(0,5)] += 1
    return result
于 2013-10-02T23:09:52.470 に答える