在 if 函数中比较的列表
Lists compared in a if function
enter image description here
>>> if LIST[2] == "a" or "A":
print("Yes")
Yes
>>> LIST[2]
'l'
有人可以解释一下吗?
我正在尝试比较列表中的项目以启动功能。但是 Python 告诉我 "l" == "a" or "A"
是不是和代码中的or有关。
你说得对,它与 or
有关。我假设您想查看 LIST[2] 是否等于 "a" 或 "A"。正确的方法是
if LIST[2] == "a" or LIST[2] == "A"
或 if LIST[2] in "aA"
所以这是您的代码中实际发生的事情:
if LIST[2] == "a" or "A":
等同于 if (LIST[2] == "a") or "A"
。 (LIST[2] == "a")
为假。但是 or
与字符串仍然是一个有效的操作!如果 x
为真,x or "A"
将计算为 x
,如果 x
为假,则计算为 "A"
。由于 (LIST[2] == "a")
为假,or
给出 "A"
,结果为 if "A":
。 Python 认为所有非空字符串为真,空字符串 ""
为假。所以,"A"
被认为是真的,if
里面的语句被执行。
>>> if LIST[2] == "a" or "A":
print("Yes")
Yes
>>> LIST[2]
'l'
有人可以解释一下吗?
我正在尝试比较列表中的项目以启动功能。但是 Python 告诉我 "l" == "a" or "A"
是不是和代码中的or有关。
你说得对,它与 or
有关。我假设您想查看 LIST[2] 是否等于 "a" 或 "A"。正确的方法是
if LIST[2] == "a" or LIST[2] == "A"
或 if LIST[2] in "aA"
所以这是您的代码中实际发生的事情:
if LIST[2] == "a" or "A":
等同于 if (LIST[2] == "a") or "A"
。 (LIST[2] == "a")
为假。但是 or
与字符串仍然是一个有效的操作!如果 x
为真,x or "A"
将计算为 x
,如果 x
为假,则计算为 "A"
。由于 (LIST[2] == "a")
为假,or
给出 "A"
,结果为 if "A":
。 Python 认为所有非空字符串为真,空字符串 ""
为假。所以,"A"
被认为是真的,if
里面的语句被执行。