если оператор возвращает ложь, тогда как это правда - PullRequest
1 голос
/ 30 ноября 2019

У меня (>) в качестве ввода

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

Затем я пишу

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.

Почему в операторе if это ложное выражение?

1 Ответ

5 голосов
/ 30 ноября 2019

Это связано с логикой объединения операторов в Python:

nickcolor in color == True

фактически анализируется как

(nickcolor in color) and (color == True)

color не равно True, поэтому все условиеis False.

В этом случае это случайно, но эта логика обычно используется для арифметических сравнений, в которых это очень удобно:

0 < x < 10

вместо

0 < x and x < 10

Обратите внимание, что на самом деле ничего из этого здесь не нужно, поскольку nickcolor in color уже является условием, вы можете написать свой if следующим образом:

if nickcolor in color:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...