Вы правы, что это как-то связано с 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
выполняется.