Списки сравниваются в функции if - PullRequest
0 голосов
/ 09 апреля 2020

enter image description here введите описание изображения здесь

>>> if LIST[2] == "a" or "A":
    print("Yes")

Yes

>>> LIST[2]
'l'

Может кто-нибудь объяснить это?

Я пытаюсь сравнить элементы в списке, чтобы начать функцию. Но Python говорит мне, что "l" == "a" or "A"

Это как-то связано с или в коде.

1 Ответ

0 голосов
/ 09 апреля 2020

Вы правы, что это как-то связано с 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 or "A" оценивается как x, если x верно, или "A", если x ложно. Поскольку (LIST[2] == "a") ложно, or дает "A", что приводит к if "A":. Python считает все непустые строки истинными, а пустую строку "" ложными. Таким образом, "A" считается истинным, и оператор внутри if выполняется.

...