问题是当兄弟说“不”时,即使我使用“ else”或“ elif”,条件“ if”总是出现,为什么?是否不是如果输入的内容不是“是”或“是”,是否还会出现其他内容?请帮助
好的,这是我的代码:
# asking the bro
are_you_happy = input("You feel bad bro? ")
# psicological support loop haha
while are_you_happy.upper() == "YES" or "YEAH":
print("*give him a hug*")
better = input("you feel better bro? ")
# he feel better boys :)
if better.upper() == "YES" or "YEAH":
print("i'm happy for you")
break
# he don't feel better :(
elif better.upper() == "NO":
more_support = input("do you want another hug? ")
if more_support.upper() == "YES" or "YEAH":
print("*give him a very huge hug")
print("i hope you well bro")
break
答案 0 :(得分:0)
在Python中,表达式:
something == "YES" or "YEAH"
等效于:
(something == "YES") or ("YEAH")
而且,由于"YEAH"
是一个真实值,因此总是是正确的。在这种情况下,使用or
的 right 方法是:
something == "YES" or something == "YEAH"
但您最好使用Pyhtonic:
something in ["YES", "YEAH"]
确保更改代码中所有三个问题行。
答案 1 :(得分:0)
当您使用或声明两个可能的条件时,应将两者与条件进行比较,因此,在您的示例中,您正在使用are_you_happy.upper() == "YES" or "YEAH"
,并且程序正在检查are_you_happy是否等于YES,并且将返回false并导致您进入else部分,但是,在or或YEAH上没有与任何内容进行比较之后,就好像您有if "YEAH":
一样,它将始终返回true,因此,elif和else永远不要运行。将or情况修改为:if are_you_happy.upper() in ["YES","YEAH"]:
,依此类推。
答案 2 :(得分:-2)
您提到“是”总是对的
while are_you_happy.upper()!=“”是“或”是“:
将上述内容从==更改为!=