1

Python が初めての私は、関数を使用して別の関数を呼び出すクラップス ゲームをシミュレートしようとしています。残念なことに、コードをテストするときは常に、すべてのゲームで 100% 勝つか、すべてのゲームで 100% 負けます。私がクラップス ゲームと呼んでいた変数であるゲームは、一度だけ発火し、同じゲームを使用してそれをカウントしていることを知っています。問題は、変数ゲームを再び起動する方法です。ここに私のコードがあります:

def testcraps(n):
    losses=0
    wins=0
    game=quietCraps()
    for x in range(n):    
        game
        print('quietcraps:')
        print(game)
        if game==1:
            wins=wins+1
        if game==0:
            losses=losses+1
        Total=wins/n
        print('wins:')
        print(wins)
        print('Total:')
        print(Total)


def quietCraps():
    import random
    dice=random.randrange(2,12)
    dice2=random.randrange(2,12)
    if dice==7 or dice==11:        
        return 1
    elif dice==2 or dice==3 or dice==12:        
        return 0       
    else:
        while dice2!=dice or dice2!=7:
            dice2=random.randrange(2,12)
            if dice2==dice:
                return 1
            if dice2==7:
                return 0
4

2 に答える 2

4

ループの外でquietCraps() 1 回だけ呼び出します。

game=quietCraps()
for x in range(n):    
    game

game式は何もしませ。新しいquietCraps()コールは行われません。ループごとに新しいゲームを呼び出したい場合は、次のようにします。

for x in range(n):    
    game=quietCraps()
于 2013-06-13T13:28:42.810 に答える
1

あなたのコードでは、quietCraps を 1 回だけ呼び出して、リフレッシュする必要があります。

def testcraps(n):
    losses=0
    wins=0

    for x in range(n):    
        game = quietCraps() # Create a new game !

        print('quietcraps:')
        print(game)
        if game==1:
            wins=wins+1
        if game==0:
            losses=losses+1
        Total=wins/n
        print('wins:')
        print(wins)
        print('Total:')
        print(Total)

補足として、すべてのインポートはコードの上にある必要があります(これは鉄則ではなく、より良い習慣です)

于 2013-06-13T13:29:24.580 に答える