Не корректно отрабатывает оператор 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')
→ Ссылка