True & False дает True в Python. Почему?

Я делал HandON с кодом ниже:

for i in range(10,16):
    if(i%5==0 & i%3==0):
        print(i, 'both')
    elif i%5==0:
        print(i,'divisible by 5')
    elif i%3==0:
        print(i,'divisible by 3')

Когда я выполняю этот код, он выдает вывод как:

10 both
12 divisible by 3
15 both

Почему он дает 10 как кратное обоим? Если это побитовый оператор, тогда «if» будет иметь «0001» и «0000» для значения 10, что должно привести к «0000». Если я использую «и» вместо «&», это дает правильный ответ.


person Gopesh    schedule 09.07.2019    source источник
comment
True & False не True в питоне. (Но тогда, что здесь происходит, спросите вы?! Очевидно, вы делаете предположение, которое не соответствует действительности. В данном случае это приоритет оператора. Попробуйте заключить условия в скобки, прежде чем использовать &)   -  person Paritosh Singh    schedule 09.07.2019
comment
он оценивает условие следующим образом: if i%5== (0 & (i%3==0)):   -  person Gábor Fekete    schedule 09.07.2019
comment
@trotta Не дубликат. OP знает, что & является побитовым   -  person DeepSpace    schedule 09.07.2019
comment
Название этого вопроса основано на неправильном предположении; python -c "print(True&False)" видимо печатает False.   -  person Ignatius    schedule 09.07.2019
comment
@ParitoshSingh Спасибо за подробное объяснение.   -  person Gopesh    schedule 09.07.2019