基于骰子的掷骰子游戏

时间:2019-03-15 15:53:35

标签: python-3.x while-loop

我正在尝试实现不带任何参数的craps()函数,模拟一场掷骰游戏,如果玩家获胜,则返回1,如果玩家输局,则返回0。

这是规则:游戏从玩家投掷一对标准的六面骰子开始。如果玩家总共掷出7或11,则获胜。如果玩家总共掷出2、3或12,则玩家输。对于其他所有掷骰值,玩家将重复掷骰子对,直到再次掷出初始值(在这种情况下她获胜)或7掷骰子(在这种情况下她输掉)

这是我得到的代码。我一直保持0,但找不到错误的地方。

def craps():
    ''' () -> int

    Return 1 if the player won and 0 if the player lost.

    >>> craps()
    0
    >>> craps()
    1
    >>> craps()
    1
    '''
    import random
    dice = random.randrange(1, 7) + random.randrange(1, 7)
    if dice == 2 or dice == 3 or dice == 12:
        return 0
    elif dice == 7 or dice == 11:
        return 1
    else:
        dice1 = random.randrange(1, 7) + random.randrange(1, 7)
        while dice1 != dice or dice1 != 7:
            dice1 = random.randrange(1, 7) + random.randrange(1, 7)
        if dice1 == dice:
            return 1
        elif dice1 == 7:
            return 0

当我调用craps()时,我总是得到0。

1 个答案:

答案 0 :(得分:1)

干得好,您非常亲密。我发现了你的问题,那是你的发言。因为骰子是复数的,所以我采取了使您的程序更具可读性的自由。我也将导入随机数从craps()函数中移出了。我添加了打印内容只是为了进行错误检查:

#Return 1 if the player won and 0 if the player lost.

import random


def craps():
    die1 = random.randrange(1,7)
    die2 = random.randrange(1,7)
    dice = die1 + die2
    if dice == 2 or dice == 3 or dice == 12:
        return 0
   elif dice == 7 or dice == 11:
        return 1
   else:
        die1 = random.randrange(1, 7)
        die2 = random.randrange(1, 7)
        dice2 = die1 + die2
        while dice2 != dice and dice2 != 7:
            die1 = random.randrange(1, 7)
            die2 = random.randrange(1, 7)
            dice2 = die1 + die2
        if dice2 == dice:
            return 1
        elif dice2 == 7:
            return 0


print(str(craps()))