Как я могу настроить свой код, чтобы он выполнял обратный цикл с несколькими условиями?

#python #regex #python-2.7 #if-statement #conditional

#python #регулярное выражение #python-2.7 #if-statement #условные операторы

Вопрос:

Я просмотрел учебные пособия, но не особенно понимаю концепцию.

Я пытаюсь заставить мой цикл while работать с несколькими операторами conditions / if:

 while True:
    user_input = raw_input('n: ').upper()
    if user_input == 'NORMAL':
        user_input = 'Normal'
    if re.match('(ABC|Normal|XY)', user_input):
        check_input = cleaned_dict.get(user_input)
    if not check_input:
        print 'Nope'
    if check_input:
        print 'Yep...'
        etc...
        break
  

Однако я получаю сообщение об ошибке:

 UnboundLocalError: local variable 'check_input' referenced before assignment
  

… Из-за того, что он не выполняет цикл, когда шаблон регулярных выражений не совпадает.

Только с одним условием это работает идеально.

Заранее спасибо.

Ответ №1:

У вас есть несколько вариантов, но проблема в том, что check_input не назначается, если нет совпадения регулярных выражений. Вы можете либо инициализировать check_input to False вне цикла, либо добавить else предложение. Я покажу последнее

 while True:
    user_input = raw_input('n: ').upper()
    if user_input == 'NORMAL':
        user_input = 'Normal'
    if re.match('(ABC|Normal|XY)', user_input):
        check_input = cleaned_dict.get(user_input)
    else:
        check_input = False
    if not check_input:
        print 'Nope'
    if check_input:
        print 'Yep...'
    etc...
    break