Python 3.x 在python中,当我使用or运算符时';不显示错误,也不显示我的预期结果 command=input(“什么东西跑得越快越难捕捉?”) ans=command.split(“”) 如果ans中有“呼吸”或“空气”: 打印(“你很聪明”) 其他: 打印(“对不起,你错了”)
我没有得到预期的结果。输出总是:Python 3.x 在python中,当我使用or运算符时';不显示错误,也不显示我的预期结果 command=input(“什么东西跑得越快越难捕捉?”) ans=command.split(“”) 如果ans中有“呼吸”或“空气”: 打印(“你很聪明”) 其他: 打印(“对不起,你错了”),python-3.x,Python 3.x,我没有得到预期的结果。输出总是: print("you're smart") 这不起作用的原因是因为或正在检查两个语句的真实性,比较多个值不起作用,只比较或多个布尔值。所以你真正拥有的是 if ("breath") or (("air" in ans) == True): 具体地说,这不是检查“呼吸”是否在ans中,而是检查如果呼吸:。答案的底部有更多关于这方面的内容 您可以通过两次写出ans部分中的来检查这两个值是否都在ans中
print("you're smart")
这不起作用的原因是因为
或
正在检查两个语句的真实性,比较多个值不起作用,只比较或
多个布尔值。所以你真正拥有的是
if ("breath") or (("air" in ans) == True):
具体地说,这不是检查“呼吸”
是否在ans
中,而是检查如果呼吸:
。答案的底部有更多关于这方面的内容
您可以通过两次写出ans部分中的来检查这两个值是否都在ans
中,如下所示:
if "breath" in ans or "air" in ans:
或者,如果您认为您将检查大量的值,您可以像前面提到的另一个答案那样列出:
wordlist = ["breath", "air", ...]
contains_word = False
for word in wordlist:
if word in ans:
contains_word = True
break
if contains_word:
#do stuff
注:“
呼吸
”由或
评估真实性。在python中,非空字符串是“truthy”,空字符串是“falsy”。如果执行“呼吸”==True
,则会得到False
,但如果执行If“呼吸”:
,则If
语句将评估为True
。而如果“”:
将计算为False
您可以使用set.intersection()
速记
#if ans is a list - ex ["your", "breath"]
if {"breath", "air"} & {*ans}:
#do something
你可以把它绑在一起,这样你所有的问题和答案都在列表中,你可以zip
并循环
qn = ["What is harder to catch the faster you run? ", ...]
an = [{"breath", "air"}, ...]
for q, a in zip(qn, an):
ans = input(q).lower().split(" ")
if a & {*ans}:
print("You're smart!")
else:
print("Sorry, you're wrong.")
您甚至可以在一行上执行输入
,检查
和打印
qn = ["What is harder to catch the faster you run? ", ...]
an = [{"breath", "air"}, ...]
for q, a in zip(qn, an):
print("You're smart!" if {*input(q).lower().split(" ")} & a else "Sorry, you're wrong.")
这应该可以回答您的问题:
“呼吸”==True
总是false。不要把真实性和布尔值混为一谈。True
。这是一个很好的观点。更正了那个错误。