Программа, которая запрашивает ввод у пользователя и пытается сопоставить с регулярным выражением, пока пользователь просто не нажмет ввод - PullRequest
0 голосов
/ 20 апреля 2020

Что мне нужно сделать, так это сопоставить пользовательский ввод с регулярным выражением и заставить функцию возвращать True или False на основе совпадающего / не совпадающего ввода. Если он совпадает, будет напечатан положительный ответ, и наоборот. Def не должен ничего печатать сам по себе. Это будет l oop до тех пор, пока пользователь только вводит данные, в результате чего программа просто завершается. На данный момент, когда я нажимаю ввод, программа продолжает пытаться сопоставить ввод с шаблоном. Так что там я полностью застрял.

Я пробовал разные вещи, например, иметь разные операторы для блока except, иметь другой шаблон только с символом новой строки и указывать его в блоке except, но я очень новичок в программировании Мне трудно понять, что искать, чтобы решить эту проблему. Я искал что-то вроде: «выход при l oop, когда ввод не соответствует регулярному выражению», «выход при вводе пользователя, ввод» et c. но безрезультатно. Я просто не могу обернуть голову, как я должен структурировать это, чтобы иметь возможность работать с программой, как задумано. Я считаю, что моя проблема находится в пределах while l oop

Так что вот мой код. Вы можете игнорировать шаблон регулярного выражения, так как он пока только заполнитель. Блок except сейчас пуст, так как у меня нет идей и я действительно расстроен. Я надеюсь, что я не расплывчат или не согласен с моим описанием программы и моей проблемой, если так, я обновлю свой пост с дополнительной информацией.

valid_name = re.compile(r"[A-Z][a-z]")

def name(user_in):
    if valid_name.match(user_in.strip()):
        return True
    else:
        return False

while True:
    user_in = input("Enter a name (use uppercase for first letter): ")
    try:
        if name(user_in) == True:
            print("Name '", user_in.strip(), "' is valid!", sep="")
        else:
            print("Name '", user_in.strip(), "' is invalid!", sep="")
    except:
        break

1 Ответ

0 голосов
/ 21 апреля 2020

Мне удалось это решить. Вот мое обновление для while l oop:

while True:
    user_in = input("Enter a name (use uppercase for first letter): ")
    if not user_in:
        break
    else:
        stripped = user_in.strip()
        if name(user_in(stripped) == True:
            print("Name '", stripped, "' is valid!", sep="")
        else:
            print("Name '", stripped, "' is invalid!", sep="")

Я также сделал новую переменную, удаляя вход вместо того, чтобы иметь функцию strip в функции. Не уверен, что лучшие практики здесь.

...