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() 一次

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 一次,您应该在其中刷新它:

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 回答