Основная концепция использования функций в основной части - PullRequest
0 голосов
/ 03 января 2019

Согласно моему пониманию, когда я должен запустить цикл while в основном теле и вызвать функцию hit_or_stand (колода, рука), код должен выполняться бесконечно много раз вокруг цикла while (в функции), когда я выбираю h, но к моему удивлению следующий код работает следующим образом:

1- Asks for h or s ?
   I type h
2- show_some(player_hand,dealer_hand)
3-if player_hand.value > 21:
            player_busts(player_hand,dealer_hand,player_chips)
            break

Вам не кажется, что код должен выполняться бесконечно около 1-го шага, поскольку я всегда выбираю h, и, насколько я понимаю, он должен оставаться в цикле функции hit_or_stand ().

def hit_or_stand(deck,hand):
    global playing

    while True:
        x = input("Would you like stand or hit? Enter 'h' or 's'")
        if x[0].lower() == 'h':
            hit(deck,hand)
        elif x[0].lower() == 's':
            print("player stands. Dealer is playing. ")
            playing = False

        else:
            print("Sorry, please try again.")
            continue
        break

Основная часть

 while playing: # recall this variable from our hit_or_stand function

        hit_or_stand(deck,player_hand)
        show_some(player_hand,dealer_hand)
        #if player hand exceeds 21, run player busts() and break out of the loop
        if player_hand.value > 21:
            player_busts(player_hand,dealer_hand,player_chips)
            break

1 Ответ

0 голосов
/ 04 января 2019

Инструкция break отменяет ваш цикл while.(https://docs.python.org/2.0/ref/break.html).

Цикл while True в функции hit_or_stand будет выполняться только один раз из-за последнего оператора break. При этом цикл в основном теле будет завершен, когда if заявление достигнуто.

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