Почему логический результат можно складывать
В Python `bool` — отдельный тип для двух ответов: «да» и «нет», но устроен он как разновидность целых чисел. Поэтому `True` ведёт себя как единица, а `False` — как ноль. Это не специальное правило для сложения: логические значения участвуют и в других числовых операциях.
Такое устройство удобно, когда нужно посчитать, сколько условий выполнено. Например, выражение `sum(x > 0 for x in numbers)` проверяет каждый элемент списка: для положительного числа получается `True`, для остальных — `False`. Функция `sum` складывает эти результаты и тем самым подсчитывает положительные числа.
Удобство не отменяет смысл типов
Логические значения созданы прежде всего для ветвления и проверок, а не для арифметики. Если сложение `True` и `False` выглядит в коде неоднозначно, результат можно явно преобразовать в число: `int(True)` даст `1`, а `int(False)` — `0`.
Так Python превращает проверку в счётчик без отдельного цикла и ручного увеличения переменной. Но при чтении программы важно помнить: за каждым таким числом стоит ответ на условие — выполнено оно или нет.






