Fea*_*ENT 2 python loops while-loop
当我在输入中键入"no"时,我希望它将"1"添加到"x",从而结束循环,但会发生的是忽略它并且不添加1 x.这是代码.
x = 1
password = ""
while x == 1:
# imagine there is some code here which works
ans1 = input("\n\nTest a new password? ")
ans1 = ans1.upper()
print(ans1)
if ans1 == ("Y" or "YES"):
x = x
elif ans1 == ("N" or "NO"):
x = x + 10
print(x)
Run Code Online (Sandbox Code Playgroud)
这是底部if/elif语句不起作用.它应该继续再次请求输入,直到用户说"不",但这不起作用.
你应该使用或那样.
if ans1 == ("Y" or "YES"):
Run Code Online (Sandbox Code Playgroud)
可以替换为:
if ans1 == "Y" or ans1 == "YES":
Run Code Online (Sandbox Code Playgroud)
要么:
if ans1 in ("Y", "YES"):
Run Code Online (Sandbox Code Playgroud)
该错误来自or运营商的定义.当你执行"Y"或"YES"时,A or B如果A不为假,它将返回"Y",如定义为返回A. 这里,A是"Y",它不是假值.因此,它将返回A ="Y".如果你这样做if a == ("Y" or "YES"):,il将相当于if a == "Y":.好吧,这有点棘手,但这是python的工作原理.
而且,你的代码很奇怪.退出这样的循环是一个非常糟糕的习惯.通常,我们将一个布尔值"循环"设置为false,当我们想要离开循环时.
这是我如何做你的循环:
looping = True
password = ""
while looping:
ans1 = input("\n\nTest a new password? ")
if ans1.upper() in ("NO", "N"):
looping = False
Run Code Online (Sandbox Code Playgroud)
您还可以使用具有无限循环(while True:)的构造.然后,调用指令break退出循环.