为什么这个 python if 语句不等于 true?
Why is this python if statement not equal to true?
我正在检查一项作业,遇到了一些让我困惑的事情,因为我对 python 不是很擅长。这是代码。
def main():
list = [1,2]
x = 2
if (x in list == True):
print("hi")
if (x in list):
print("Why does this proc?")
main()
我相信输出会是两者,但输出只是第二个 if 语句。我知道在 C 中,如果你有类似
if (x = 6)
因为只有一个“=”,所以 x 现在等于 6。(如其所读,如果 (),x = 6)。
这段 python 代码是否发生了类似的事情?它是否首先检查 'list == true',然后从那里检查列表中的 x?
任何见解将不胜感激!
如您所见,是的,您的表达式需要显式分组:
>>> 2 in [1,2] == True
False
>>> (2 in [1,2]) == True
True
请注意,正如@tavo 和@MorganThrapp 所提到的,没有括号的版本正在进行链式比较,检查 2 in [1,2]
然后检查 [1,2] == True
。后者是假的,所以完整的表达式也是假的。
顺便说一下,不要像 list
这样的内置函数来命名变量,否则您将无法轻松使用这些函数。
此外,您不必将表达式的结果与 True
:
进行比较
>>> 2 in [1,2]
True
这样做相当于询问 "is 'the cake is ready' a true statement?" 而不是 "is the cake ready?"。
我正在检查一项作业,遇到了一些让我困惑的事情,因为我对 python 不是很擅长。这是代码。
def main():
list = [1,2]
x = 2
if (x in list == True):
print("hi")
if (x in list):
print("Why does this proc?")
main()
我相信输出会是两者,但输出只是第二个 if 语句。我知道在 C 中,如果你有类似
if (x = 6)
因为只有一个“=”,所以 x 现在等于 6。(如其所读,如果 (),x = 6)。
这段 python 代码是否发生了类似的事情?它是否首先检查 'list == true',然后从那里检查列表中的 x?
任何见解将不胜感激!
如您所见,是的,您的表达式需要显式分组:
>>> 2 in [1,2] == True
False
>>> (2 in [1,2]) == True
True
请注意,正如@tavo 和@MorganThrapp 所提到的,没有括号的版本正在进行链式比较,检查 2 in [1,2]
然后检查 [1,2] == True
。后者是假的,所以完整的表达式也是假的。
顺便说一下,不要像 list
这样的内置函数来命名变量,否则您将无法轻松使用这些函数。
此外,您不必将表达式的结果与 True
:
>>> 2 in [1,2]
True
这样做相当于询问 "is 'the cake is ready' a true statement?" 而不是 "is the cake ready?"。