Не корректно отрабатывает оператор if
box_model = 'unrecognized command'
box_model2 = 'unrecognized command 2'
if '1.1.1.1/28' or '0.0.0.0/0' in box_model:
print(' in corp')
elif '1.1.1.1/28' or '0.0.0.0/0' in box_model2:
print('in grt')
else:
print(' network is not availabel')
Скрипт выдает:
in corp
Подскажите, пожалуйста, почему выполняется первое условие, а не третье?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
В какой-то степени это и правда дубликат, но всё-равно хочу дать вариант, как в вашем случае можно проверять вхождение в список без повторения кода x in y:
if any(map(box_model.__contains__, ['1.1.1.1/28', '0.0.0.0/0'])):
Можно даже в отдельную функцию такую проверку вынести:
def contains_any(x, y):
return any(map(x.__contains__, y))
lst = ['1.1.1.1/28', '0.0.0.0/0']
if contains_any(box_model, lst):
print(' in corp')
elif contains_any(box_model2, lst):
print('in grt')
else:
print(' network is not availabel')