1

Python新手在这里。我正在尝试创建一个用户与计算机对战的二十一点游戏。我认为我遇到的问题是这里的 if, elif 语句。我想知道的是,当我没有 else 语句时,如果不满足任何 if 和 elif 语句的条件会发生什么?这里没有 else 语句有问题吗?

def game_winner(n):

    p_wins = 0
    d_wins = 0

    for i in range(n):

        player_sum = player_game()
        dealer_sum = dealer_game()

        if player_sum > dealer_sum and player_sum <= 21:
            p_wins = p_wins + 1

        elif dealer_sum > 21 and player_sum <= 21:
            p_wins = p_wins + 1

        elif player_sum > 21 and dealer_sum <= 21:
            d_wins = d_wins + 1

        elif dealer_sum > player_sum and dealer_sum <= 21:
            d_wins = d_wins + 1

    return p_wins, d_wins
4

4 回答 4

2

如果不满足任何条件,则不会执行任何iforelif块中的条件。如果计算机或玩家在一轮中均未获胜,则可以。否则,您应该包含一个else声明来涵盖该情况。

于 2011-03-21T20:27:07.670 回答
1

如果您没有 else,代码将简单地“失败”;即不会执行任何条件代码,因此不会更改获胜次数。

看看你的例子的细节,我看到的唯一潜在问题是会有一些游戏没有被计算在内。您的要求或设计将决定这是否真的是一个问题。

于 2011-03-21T20:26:12.300 回答
0

这是完全有效的。没有 else 语句不是问题。

于 2011-03-21T20:26:35.060 回答
0
try:
    rng = xrange   # Python 2.x
except NameError:
    rng = range    # Python 3.x

def game_winner(n):
    p_wins, d_wins = 0, 0
    for i in rng(n):
        player = player_game()
        if player > 21:
            d_wins += 1
        else:
            dealer = dealer_game()
            if player <= dealer <= 21:
                d_wins += 1
            else:
                p_wins += 1
    return p_wins, d_wins
于 2011-03-21T21:25:19.370 回答