繁体   English   中英

无法跳出while循环

[英]cannot break out of while loop

试图做一个while循环,但即使在我尝试打破它之后它也会重复:

while True:        
    
    switch = int(input("Choose card to switch: "))
    if switch == "1":
             deck1.add_card(hand1.pop_card())
             deck1.shuffle()
             hand1.add_card(deck1.pop_card())
             break

    elif switch == "2":
               deck1.add_card(hand2.pop_card())
               deck1.shuffle()
               hand2.add_card(deck1.pop_card())
               break

    else:
              print("invalid input")
              continue

“if”和“break”之间的代码工作正常,但我只是 go 回到被要求选择一张卡。 希望可以有人帮帮我。 提前致谢!

Integer 不等于字符串,这就是 else 语句打印无效输入和 while 循环再次继续的原因。 代码:

while True:        
switch = int(input("Choose card to switch: "))
if switch == 1:
         deck1.add_card(hand1.pop_card())
         deck1.shuffle()
         hand1.add_card(deck1.pop_card())
         break

elif switch == 2:
           deck1.add_card(hand2.pop_card())
           deck1.shuffle()
           hand2.add_card(deck1.pop_card())
           break

else:
          print("invalid input")
          continue

最可能的答案是您从用户那里接收整数,但有条件地检查字符串。 if条件更改为12而不是"1""2"

一般来说,如果您正在使用复杂的while循环和if子句结构,这可能是实现您所追求的更好的方法:

repeat = True
while repeat:
    switch = int(input("Choose card to switch: "))
    if switch == "1":
        deck1.add_card(hand1.pop_card())
        deck1.shuffle()
        hand1.add_card(deck1.pop_card())
        repeat = False
    elif switch == "2":
        deck1.add_card(hand2.pop_card())
        deck1.shuffle()
        hand2.add_card(deck1.pop_card())
        repeat = False
    else:
        print("invalid input")

虽然可能不是最 Pythonic 的方法,但这是追踪复杂条件结构逻辑的好方法。

同样,您的问题很可能只是您从用户那里接收整数( int(input("Choose card to switch: ")) )并检查字符串( if switch == "1" )。

您应该首先尝试像这样更改:

while True:
    switch = int(input("Choose card to switch: "))
    if switch == 1:
        deck1.add_card(hand1.pop_card())
        deck1.shuffle()
        hand1.add_card(deck1.pop_card())
    elif switch == 2:
        deck1.add_card(hand2.pop_card())
        deck1.shuffle()
        hand2.add_card(deck1.pop_card())
    else:
        print("invalid input")

在使用repeat = Truewhile repeat之前尝试一下。

您正在使用 integer 输入,但在 if 条件下,您将其与字符串值进行比较。

我想通了:这段代码在 Jupyter Lab 中工作并且没有循环。 但在 Spyder 4.1.4 中,出于某种原因它确实如此。 仍然不确定为什么。 但是,嘿,现在明白了。 感谢您的输入

这是因为您将输入作为 integer 接收,并且在 if 语句中您正在检查类型是否为字符串并且等于 1,因此您必须将 if 语句条件更改为 integer 或将输入作为字符串接收

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM