x = 0
while True:
choice = int(input ("Choose 1 or 2"))
if choice == 2:
print("You chose 2")
x == 1
if choice == 1:
print("You chose 1")
x == 1
if choice >2:
print("I said 1 or 2.")
x == 0
if choice <1:
print("I said 1 or 2")
x == 0
因此,如果我选择1或2,我希望它停止,但如果我选择其他情况,我希望它循环,但它总是循环,无论有人可以帮助这个?
答案 0 :(得分:2)
你必须从无限循环中明确break
:
while True:
choice = int(input("Choose 1 or 2"))
if choice in (1, 2):
print("You chose {}".format(choice))
break
print("I said 1 or 2")
另请注意,x == 1
不是赋值,而是一个布尔表达式 - 它本身 - 不执行任何操作,除非在未定义x
时引发错误。
答案 1 :(得分:1)
如上所述,您的代码具有无限while True
循环。循环条件是固定的,没有break
语句,所以它自然会永远循环。
如果你的目标是在x == 1
时退出,那么你需要在循环条件下测试它。 while True
永远不会停止。确保您使用x
分配到x = 1
- 一个等号。
x = 0
while not x:
choice = int(input ("Choose 1 or 2"))
if choice == 2:
print("You chose 2")
x = 1
if choice == 1:
print("You chose 1")
x = 1
if choice >2:
print("I said 1 or 2.")
if choice <1:
print("I said 1 or 2")
或者,您可以明确地break
退出循环。那么你甚至不需要x
。
while True:
choice = int(input ("Choose 1 or 2"))
if choice == 2:
print("You chose 2")
break
if choice == 1:
print("You chose 1")
break
if choice >2:
print("I said 1 or 2.")
if choice <1:
print("I said 1 or 2")
第三个选项是在循环条件中检查choice
。
choice = None
while choice not in {1, 2}:
choice = int(input ("Choose 1 or 2"))
if choice == 2:
print("You chose 2")
if choice == 1:
print("You chose 1")
if choice >2:
print("I said 1 or 2.")
if choice <1:
print("I said 1 or 2")
有一些不必要的重复。我建议稍微重构一下,以消除重复的代码。
while True:
choice = int(input("Choose 1 or 2"))
if choice in {1, 2}:
break
else:
print("I said 1 or 2.")
print("You chose " + str(choice))
答案 2 :(得分:0)
您的代码中有多处错误。
While True
将完全执行此操作:它将循环直到True
变为False
。问题是你的代码无法做到这一点,即无限循环。
您可以在成功输入后使用break
,因为已经提供了其他答案,或者您可以执行以下操作:
x = 0
flag = True
while flag:
choice = int(input('Choose 1 or 2: '))
if choice in [1, 2]:
print('You chose', choice)
x = choice
flag = False
else:
print('I said 1 or 2.')
最初,布尔值flag
设置为True。 while
循环检查条件并看到flag
设置为true,因此它进入循环。
将采用用户的输入,将其分配给变量choice
,if choice in [1, 2]:
是检查输入是1
还是2
的简单方法。它会检查choice
是否匹配列表[1, 2]
中的任何元素。如果是,则用户的输入有效。
成功输入后,将输入分配给x
,然后将标志设置为False。 while
循环的下一次迭代将再次检查条件,但是看到flag
设置为False,并且将自己从循环中分离出来。
将打印无效输入,但会将flag
保持为True,从而启动循环的另一次迭代。
您的代码还包含x == 0
,您的意思是x = 0
。您打算做的是为变量x
赋值,但==
是一个布尔运算符,用于检查两个布尔表达式之间的相等性。您想要使用赋值运算符=
。
答案 3 :(得分:-1)
您可以添加中断语句
x = 0
while True:
choice = int(input ("Choose 1 or 2"))
if choice == 2:
print("You chose 2")
x=1
break
if choice == 1:
print("You chose 1")
x=1
break
if choice >2:
print("I said 1 or 2.")
x=0
if choice <1:
print("I said 1 or 2")
x=0