вопрос об операторе else блэкджек в python

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

person Community    schedule 21.03.2011    source источник
comment
извините, неправильно отредактировано... пожалуйста, вернитесь назад   -  person    schedule 21.03.2011


Ответы (3)


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

person JoshAdel    schedule 21.03.2011

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

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

person GreenMatt    schedule 21.03.2011
comment
правильно, поэтому, если ни один из условных кодов не выполняется, будет ли цикл просто повторяться снова? - person ; 21.03.2011
comment
правильно - ни один счетчик выигрыша не будет увеличен, и будет выполнен следующий раунд. - person JoshAdel; 21.03.2011

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

person Chris Eberle    schedule 21.03.2011