我正在尝试实现一个不带参数的函数 craps(),它模拟一场掷骰子游戏,如果玩家赢了则返回 1,如果玩家输了则返回 0

游戏规则:
游戏以玩家掷骰子开始。如果玩家总共掷出 7 或 11,则玩家获胜。如果玩家总共掷出 2.3 或 12,则玩家失败。对于所有其他掷骰值,游戏继续进行,直到玩家再次掷出初始值(在这种情况下玩家获胜)或 7(在这种情况下玩家失败)。

我想我越来越近了,但我还没有到那里,我认为我的 while 循环还没有正常工作。这是我到目前为止得到的代码:

def craps():
    dice = random.randrange(1,7) + random.randrange(1,7)
    if dice in (7,11):
        return 1
    if dice in (2,3,12):
        return 0
    newRoll = craps()
    while newRoll not in (7,dice):
        if newRoll == dice:
            return 1
        if newRoll == 7:
            return  0

如何修复while循环?我真的找不到它的问题,但我知道它是错误的或不完整的。

最佳答案

您正在递归调用 craps ,但这将不起作用,因为该函数返回 1 或 0。您需要将实际掷骰子添加到您的 while 循环中。

newRoll = random.randrange(1,7) + random.randrange(1,7)
while newRoll not in (7,dice):
    newRoll = random.randrange(1,7) + random.randrange(1,7)

if newRoll == dice:
    return 1
else:
    return  0

关于python - 模拟掷骰子游戏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16699893/

10-11 20:30