if 语句返回 false,而它为 true

1 python if-statement python-3.x python-requests

我有 (>) 作为输入

color = ['grey', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white']
nickcolor = input()
>red
nickcolor in color
>True
Run Code Online (Sandbox Code Playgroud)

然后我写

if nickcolor in color == True:
    print('You are now logged in ' + nickname + ' !\n Write something in chat!')
else:
    print('Error occured. Please restart.')
>Error occured. Please restart.
Run Code Online (Sandbox Code Playgroud)

为什么在 if 语句中它是假的?

zdi*_*ion 5

这是由于 Python 的运算符链接逻辑:

nickcolor in color == True
Run Code Online (Sandbox Code Playgroud)

实际上被解析为

(nickcolor in color) and (color == True)
Run Code Online (Sandbox Code Playgroud)

color不等于True,所以整个条件是False

在这种情况下,这是偶然的,但这种逻辑通常用于算术比较,在其中非常方便:

0 < x < 10
Run Code Online (Sandbox Code Playgroud)

代替

0 < x and x < 10
Run Code Online (Sandbox Code Playgroud)

请注意,这里实际上不需要这些,因为nickcolor in color已经是一个条件,您可以这样写if

if nickcolor in color:
Run Code Online (Sandbox Code Playgroud)