【问题标题】:Dice-based game of craps基于骰子的掷骰子游戏
【发布时间】:2019-03-15 15:53:34
【问题描述】:

我正在尝试实现不带参数的函数 crap(),模拟一场掷骰子游戏,如果玩家获胜则返回 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

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

【问题讨论】:

  • 您已经说过“这是代码”但没有发布。这很难提供帮助。
  • 这是一个函数吗(你还没有发布def)?尝试在设置时打印值 dicedice1
  • 如果你在函数之外import random,有什么变化吗?
  • @doctorlove:这行不通。也许我应该将while循环中的“或”更改为“和”。
  • @doctorlove:我认为它现在有效。我开始得到 1 和 0。

标签: python-3.x while-loop


【解决方案1】:

干得好,你很接近。我发现了你的问题,这是你的 while 语句。由于 dice 是复数形式,我冒昧地让你的程序更具可读性。此外,我将您的导入随机移出 crap() 函数。我添加打印只是为了检查错误:

#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()))

【讨论】:

    猜你喜欢
    • 2012-02-29
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    相关资源
    最近更新 更多