Проблема возникает из-за этого утверждения:
if bracket[index_of_or -1 ] or bracket[index_of_or +1] in sentence:
Это на самом деле делает что-то совсем другое, чем кажется.Он оценивается как true, если либо:
bracket[index_of_or -1 ]
оценивается как true, либо
bracket[index_of_or +1] in sentence
оценивается как true.
но вы думаете, что оно оценивается как истинное, если либо:
bracket[index_of_or -1 ] in sentence
оценивается как истинное, либо
bracket[index_of_or +1] in sentence
оценивается как true.
Первое условное (bracket[index_of_or -1 ]
) будет оценено как True
, если число не равно 0. Это оценивается как False
потому что index_of_or = bracket.index("or")
возвращает 1, а bracket[index_of_or -1 ]
делает его 0, что делает его равным False
.
Чтобы исправить это, просто измените вашу программу на:
sentence = ["A", "B", "C"]
bracket = ["X", "or", "B"]
if "or" in bracket:
index_of_or = bracket.index("or")
if (bracket[index_of_or -1 ] or bracket[index_of_or +1]) in sentence:
bracket = "True"
print(bracket)
else:
bracket = "False"
print(bracket)
и результат будет False
, как и предполагалось.