Дважды пока-l oop разбей и прыгай в очередь, пока l oop вопросы - PullRequest
0 голосов
/ 22 апреля 2020

У меня два вопроса по поводу while-l oop! Я не хочу тратить ваше время, но мне действительно нужна помощь.

1, в моем коде, хотя true: и другое время уже существует. Я понимаю, что могу разбить второй while-l oop, но как я могу разбить первый while-l oop одновременно?

2, в конце кода "if stand_hit == ' h '; есть ли в любом случае возвращение к stand_hit ==' s '? Я не хочу, чтобы это показывало печатные (mycard) вещи после прохождения stand_hit == h. Я хочу забрать новую карту или встать немедленно.

Спасибо! Если вы не поняли смысл моего вопроса, пожалуйста, прокомментируйте!

while True:

player_card = []
player_card.append(player_draw())
player_card.append(player_draw())
print('your cards:',player_card[0]+player_color,player_card[1]+player_color)
player_total = card_dict[player_card[0]]+card_dict[player_card[1]] 

dealer_card = []
dealer_card.append(dealer_draw())
dealer_card.append(dealer_draw())

dealer_cards = []

for i in dealer_card:
    dealer_cards.append(card_dict[i])

dealer_total = sum(dealer_cards)    
player_card = []

stand_hit = input('(S)tand or (H)it?...: ') 

if stand_hit == 's':

    print('Dealer cards:', dealer_card[0]+dealer_color, dealer_card[1]+dealer_color)

        while dealer_total < 17:

            if dealer_total < 11:
                card_dict['A'] = 11
            elif dealer_total > 10:
                card_dict['A'] = 1

            a = random.choice(list(card_dict))
            print('Dealer drew:', a + dealer_color)
            dealer_total += card_dict[a]

            if dealer_total > 21:
                print('You win!')
                player_score += 1
                print('Dealer:', dealer_score, 'Player:', player_score)
                play_again = input('Play again (Y/N)?...: ')
                if play_again == 'y':
                    print()
                    continue
                elif play_again == 'n':
                    print('\n')
                    print('>_')
                    break



elif stand_hit == 'h':
    a_cards = random.choice(list(card_dict))
    print('You drew:', a_cards + player_color) 
    player_total += card_dict[a_cards]
    stand_hit = 's'

    if player_total > 21:
        print('Dealer wins')
        dealer_score += 1
        print('Dealer:', dealer_score, 'Player:', player_score)
        play_again = input('Play again (Y/N)?...: ')
        if play_again == 'y':
            print()
            continue
        elif play_again == 'n':
            print('\n')
            print('>_')
            break

1 Ответ

1 голос
/ 22 апреля 2020

Я могу придумать два метода остановки внешнего l oop на основе условия, выполняемого во внутреннем l oop.

Псевдокод:

bln = True

while bln:
    # Do stuff
    while x < y:
        if z == n:
            # Break inner loop, and set bln to False to break outer loop
            bln = False
            break

A Второй метод:

while True:
    bln = False
    # Do stuff
    while x < y:
        if z == n:
            # Break inner loop, and set bln to True for later break statement
            bln = True
            break
    if bln:
        break

Обратите внимание, что при первом методе внешняя итерация l oop завершится sh, даже если для bln установлено значение True. Второй способ, однако, резко нарушит внешний l oop.

...