[英]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
条件更改为1
和2
而不是"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 = True
和while repeat
之前尝试一下。
您正在使用 integer 输入,但在 if 条件下,您将其与字符串值进行比较。
我想通了:这段代码在 Jupyter Lab 中工作并且没有循环。 但在 Spyder 4.1.4 中,出于某种原因它确实如此。 仍然不确定为什么。 但是,嘿,现在明白了。 感谢您的输入
这是因为您将输入作为 integer 接收,并且在 if 语句中您正在检查类型是否为字符串并且等于 1,因此您必须将 if 语句条件更改为 integer 或将输入作为字符串接收
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.