вопрос о другом утверждении ... блэкджек в питоне - PullRequest
1 голос
/ 21 марта 2011

Python новичок здесь.Я пытаюсь создать игру Блэк Джек, в которой пользователь играет против компьютера.Я думаю, что у меня проблемы с заявлениями if, elif здесь.Я хочу знать, что происходит, когда не выполняется ни один из критериев любого из утверждений 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 ]

2 голосов
/ 21 марта 2011

Если ни одно из условий не выполнено, то ни одно из условий ни в одном из блоков if или elif не выполняется. Если это нормально, что ни компьютер, ни игрок не выигрывают в раунде, тогда это нормально. В противном случае вы должны включить заявление else для этого случая.

1 голос
/ 21 марта 2011

Если у вас нет другого, код просто «провалится»;т.е. ни один из условных кодов не будет выполнен, поэтому количество выигрышей не будет изменено.

Если посмотреть на особенности вашего примера, единственная потенциальная проблема, которую я вижу, состоит в том, что будут некоторые игры, которые неподсчитаны.Ваши требования или дизайн определят, действительно ли это проблема или нет.

0 голосов
/ 22 марта 2011
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
0 голосов
/ 21 марта 2011

Это совершенно верно. Отсутствие другого утверждения не проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...