Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多个变量与1个字符串进行比较的if语句_Python_Python 3.x - Fatal编程技术网

Python 将多个变量与1个字符串进行比较的if语句

Python 将多个变量与1个字符串进行比较的if语句,python,python-3.x,Python,Python 3.x,所以不管我怎么用这些if staments if (x,y,z == "no no yes"): print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY") if (x,y,z == "no yes no"): print ("PERFECT SOLDOER DETECTED, REPORT TO US ARMY") if (x,y,z == "yes no no"): print ("LONER ROBOT DETECTED

所以不管我怎么用这些if staments

if (x,y,z == "no no yes"):
    print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
if (x,y,z ==  "no yes no"):
    print ("PERFECT SOLDOER DETECTED, REPORT TO US ARMY")
if (x,y,z == "yes no no"):
    print ("LONER ROBOT DETECTED, DESTROY IMMEDIATELY")
if (x,y,z == "no yes yes"):
    print ("THIS ROBOT HURTS HUMANS")
if (x,y,z == "yes yes no"):
    print ("This robot is self destructive")
if (x,y,z == "yes no yes"):
    print ("This robot disobeys orders")
if (x,y,z  == "no no no"):
    print ("YOU HAVE A PHYCOPATH ROBOT, DESTROY AT ALL COSTS")
它只是打印所有的字符串,有人能帮我处理一下吗?

x,y,z==“no-no-yes”
计算为三个值的元组:
x
y
,以及一个布尔值(真/假),指示
z
是否等于
“no-no-yes”
。这是一个长度非零的元组,它是真实的,因此所有的
条件都通过了

相反,写
(x,y,z)=(“否”、“否”、“是”)
等等

(x,y,z == "no no yes")
这并没有达到您期望的效果。首先,不能同时将多个变量与单个字符串进行比较。您需要将其拆分为单独的支票

但是为什么您的代码要打印所有字符串?如果您是Python新手,这可能有点令人惊讶:Python中的逗号分隔元组元素,因此
x,y,z
将是一个包含三个元素的元组,
x
y
z
。元组永远不会等于字符串,那么为什么所有的检查都成功了呢

原因是
=
运算符的绑定强度大于逗号。所以你实际上写的是这样的:
(x,y,(z==“no-no-yes”)
。因此,将
z
(且仅
z
)与字符串进行比较,并将结果作为第三个值放入元组中
x
y
作为元组的第一个和第二个元素

在Python中,非空元组的计算结果恰好是
True
。因此,以下措施始终有效:

if (x, y, False):
    print('Works')

如上所述,要修复代码,您必须针对每个值分别检查每个变量:

if x == "no no yes" or y == "no no yes" or z == "no no yes":
    print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
if x == "no" and y == "no" and z == "yes":
    print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
由于您正在检查是否相等,因此也可以在此处使用
中的
运算符,逻辑颠倒:

if "no no yes" in (x, y, z):
    print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
您可以从以下问题了解更多信息(仅从另一个方向):


正如我刚刚从中了解到的,您可能希望将这些字符串拆分为单独的字符串,并分别对每个变量进行检查:

if x == "no no yes" or y == "no no yes" or z == "no no yes":
    print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
if x == "no" and y == "no" and z == "yes":
    print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
如果x==y==z==“literal”
可能就是您要搜索的内容——这使用比较运算符链接(python中的一个功能)