print('a' in arr in arr) // False
интерпретируется как print('a' in arr in arr) // 0
, который выдает ZeroDivisionError: целочисленное деление или по модулю на ноль ошибка. Если вы хотели закомментировать False
, сделайте это, используя "#"
, а не "//"
(например, print('a' in arr in arr) # False
)
'a' in arr in arr
читается справа налево [1] : проверьте, если arr in arr
(False), а затем проверьте, если 'a' in False
(False)
- Использование полезного комментария @Klaus D -
print('a' in arr in arr)
оценивается как print(('a' in arr) and (arr in arr))
из-за цепочки операторов. Это, в свою очередь, обрабатывается в print(True and False)
-> print(False)
Чтобы проверить, есть ли 'a'
в arr
, просто отметьте print('a' in arr)
# prints True
[1] Ну, не совсем так. Как видно из [], в каком порядке выполняется оператор if, вычисляемый в Python ], вычисление выполняется справа налево, поэтому на самом деле происходит следующее: (1) проверяется, находится ли «a» в «чем-то» , (2) оцените это «что-то», проверив, если arr in arr
. (3) использовать повторное упоминание чего-либо (что, к сожалению, False
, arr
не является его частью) и проверить, находится ли 'a'
внутри этого (то есть, проверить, если 'a' in True
, что опять же, Неверно [1]