Ограничение ввода пользователя в алфавиты

Я технический писатель, изучающий питон. Я хотел написать программу для проверки ввода поля Name, как практики, ограничивая записи пользователя в алфавитах. Я видел аналогичный код для проверки числа (Age) здесь и принял его для алфавитов, как показано ниже:

import string 

import re

 r = re.compile(r'[a-zA-Z]+') print "WELCOME FOR NAME VERIFICATION. TYPE ALPHABETS ONLY!" print raw_input("Your Name:") x = r if x == r: print x elif x != r: print "Come on,'", x,"' can't be your name" print raw_input("Your Name:") if 5<=len(x)<=10: print "Hi,", x, "!" elif len(x)>10: print "Mmm,Your name is too long!" elif len(x)<5: print "Alas, your name is too short!" raw_input("Press 'Enter' to exit!") 

Я намереваюсь этот блок кода делать две вещи. А именно, отобразите приглашение ввода до тех пор, пока пользователь не вводит алфавиты только как «Имя». Затем, если это произойдет, обработайте длину этих входных и отображаемых сообщений как закодированных. Но у меня возникают две проблемы, которые я не мог решить даже после многих попыток. Либо, даже правильные записи отвергаются кодом исключения или принимаются неверные записи, и их длина обрабатывается.

Пожалуйста, помогите мне отладить мой код. И, можно ли это сделать без использования reg exp?

3 Solutions collect form web for “Ограничение ввода пользователя в алфавиты”

Если вы используете Python, для этого вам не нужны регулярные выражения – в него включены библиотеки, которые включают в себя функции, которые могут вам помочь. На этой странице по методам String вы можете вызвать isalpha() :

Возвращает true, если все символы в строке являются алфавитными и есть хотя бы один символ, иначе false.

Я бы предложил использовать isalpha() в вашем if-statement вместо x==r .

Я не понимаю, что вы пытаетесь сделать с

 x = r if x == r: etc 

Это условие всегда будет верно.

С вашим текущим кодом вы никогда не сохраняли ввод, просто распечатывая его прямо.

У вас также не было цикла, он будет просто запрашивать имя дважды, даже если это было неправильно, оба раза он будет продолжаться.

Я думаю, что вы пытались сделать это:

 import string import re r = re.compile(r'[a-zA-Z]+') print "WELCOME FOR NAME VERIFICATION. TYPE ALPHABETS ONLY!" x = raw_input("Your Name:") while not r.match(x): print "Come on,'", x,"' can't be your name" x = raw_input("Your Name:") if 5<=len(x)<=10: print "Hi,", x, "!" elif len(x)>10: print "Mmm,Your name is too long!" elif len(x)<5: print "Alas, your name is too short!" raw_input("Press 'Enter' to exit!") 

Кроме того, я бы не использовал regex для этого, попробуйте

 while not x.isalpha(): 

Один из способов сделать это – сделать следующее:

 namefield = raw_input("Your Name: ") if not namefield.isalpha(): print "Please use only alpha charactors" elif not 4<=len(namefield)<=10: print "Name must be more than 4 characters and less than 10" else: print "hello" + namefield 

isalpha будет проверять, является ли целая строка только альфа-символами. Если это так, он вернет True.

  • Как http://shell.appspot.com/ выполняется код онлайн?
  • Python __attrs__ объяснил
  • Чтение 3 байтов как целое число
  • Что такое внутренности Pythons str.join ()? (Скрытие паролей с выхода)
  • Base64 кодирует двоичные загруженные данные в AppEngine
  • если возвращаемое значение для метода `__enter__` всегда будет` self` в python
  • Объединить числа в двоичных
  • Как сделать поле условно опциональным в WTForms?
  • Python - лучший язык программирования в мире.