【问题标题】:Double while-loop break and jump to line in while loop questions双while循环中断并跳转到while循环问题
【发布时间】:2020-08-05 07:52:54
【问题描述】:

我有两个关于while循环的问题! 我不想浪费你的时间,但我真的需要帮助。

1,在我的代码中,while true: 并且存在另一个 while。我知道我可以打破第二个 while 循环,但我怎样才能同时打破第一个 while 循环?

2,在代码“if stand_hit == 'h'; 的末尾有没有回到 stand_hit == 's'?我不希望它在通过 stand_hit == h 后显示 print(mycard) 的东西. 我确实想拿起新卡或立即站立。

谢谢!如果您不理解我的问题,请发表评论!

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

【问题讨论】:

  • 不会简单的 break break 工作
  • @PNX 只会破坏内部的 while 循环
  • 为什么第一个循环没有布尔值?然后您可以更改内部循环中该布尔值的值,以便外部循环也停止。 While bln: 和内循环 bln = False
  • @TimStack 你是什么意思?我不明白:(

标签: python if-statement while-loop break


【解决方案1】:

我能想到的两种方法可以根据内循环中满足的条件来停止外循环。

伪代码:

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

第二种方法:

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

请注意,使用第一种方法,外循环的迭代将完成,即使 bln 设置为 True。然而,第二种方法会突然中断外循环。

【讨论】:

  • 这是完美的。非常感谢!
  • 如果你有时间,你能解释一下while循环中的跳行吗?
  • 很高兴我能提供帮助,不要忘记将答案标记为有用或接受它。你的第二个问题表述得不好,我不明白你的意思。可惜我现在没时间看。
猜你喜欢
  • 2011-06-19
  • 1970-01-01
  • 2018-11-05
  • 2023-04-09
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多