gpt4 book ai didi

Python while 循环没有按预期工作

转载 作者:行者123 更新时间:2023-11-28 20:18:09 24 4
gpt4 key购买 nike

当我在输入中键入“no”时,我希望它在“x”上加 1,从而结束循环,但实际发生的是它忽略它并且不加 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)

无效的是底部的 if/elif 语句。它应该继续再次请求输入,直到用户说不,但这是行不通的。

最佳答案

你应该使用 or 那种方式。

if ans1 == ("Y" or "YES"):

可以替换为:

if ans1 == "Y" or ans1 == "YES": 

或者:

if ans1 in ("Y", "YES"): 

错误来自于 or 运算符的定义。当您执行“Y”或“YES”时,它将返回“Y”,因为 A 或 B 被定义为如果 A 不为假则返回 A。在这里,A 是“Y”,它不是 False 值。因此,它将返回 A="Y"。如果您执行 if a == ("Y"or "YES"):,il 将等同于 if a == "Y":。好吧,这有点棘手,但这就是 python 的工作原理。

而且,你的代码很奇怪。像那样退出循环是一个非常糟糕的习惯。通常,当我们想离开循环时,我们会放置一个 bool 值“looping”,该值设置为 false。

这是我将如何执行您的循环:

looping = True 
password = ""

while looping:

ans1 = input("\n\nTest a new password? ")

if ans1.upper() in ("NO", "N"):
looping = False

您还可以使用具有无限循环的结构 (while True:)。然后,调用指令 break 退出循环。

关于Python while 循环没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com