@Hypick

Как сократить условие python?

У меня есть 14 переменных и мне нужно каждый проверить не равен ли он нулю. Потом еще раз так же проверить, но два элемента уже должны быть равно нулю.
Пример:
if a != 0 and a_2 != 0 and b != 0 and b_2 != 0 and c != 0 and c_2 != 0 or a != 0 and a_2 != 0 and b == 0 and b_2 == 0 and c != 0 and c_2 != 0 or a == 0 and a_2 == 0 and b != 0 and b_2 != 0 and c != 0 and c_2 != 0

и так далее

Так вот, как-нибудь можно это сократить? Кол-во переменных может быть изменено
  • Вопрос задан
  • 490 просмотров
Пригласить эксперта
Ответы на вопрос 3
@twistfire92
Python backend developer
если хотите условие "ни один не равен нулю", используйте
all([a, b, c])
где a, b, c - отличные от 0 значения (Если быть точнее, значения эквивалентные True)

Также существует функция any(). Тоже принимает список значений и проверяет, чтобы хотя бы одно значение было эквивалентно True.

Как это использовать - задача из области булевой алгебры, 10 класс.
Ответ написан
Комментировать
bravebug
@bravebug
Любое выражение при использовании с условными операторами приводится к его булеву значению (True или False)
Исходя только из того что:
>>> bool(0)
False
>>> bool(not 0)
True

ваше выражение уже может быть сокращено до:
if a and a_2 and b and b_2 and c and c_2 or a and a_2 and not b and not b_2 and c and c_2 or not a and not a_2 and b and b_2 and c and c_2

А вообще подобных условий никогда не пишите, уже завтра Вы сами не сможете понять, что написали.
Наверняка эти условия можно структурировать разветвив на вложенные подусловия и сгруппировав функциями all и any.
Ответ написан
Комментировать
@alexbprofit
Junior SE
if 0 not in your_list:
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы