Что мне нужно сделать, так это сопоставить пользовательский ввод с регулярным выражением и заставить функцию возвращать 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