당신은 없애 문자열의 replace
방법을 사용할 수 있습니다 공백을 입력 한 다음 isalpha()
메서드를 사용하십시오.
예 :이 python3 비 아스키 문자로도 작동
>>> def get_name():
... name = raw_input('name: ') # use a simple "input" in python3
... if not name.replace(' ', '').isalpha():
... print('Bad name!!!')
... else:
... print('Good name!')
...
>>> get_name()
name: My name
Good name!
>>> get_name()
name: Bad Nam3
Bad name!!!
>>> get_name()
name: Jon Skeet
Good name!
참고 :
#python3
>>> get_name()
name: Accented è
Good name!
>>> get_name()
name: Bad Nam3
Bad name!!!
정규 표현식이 간단한 작업이 너무 복잡합니다. [A-Za-z ]+
또는 유사 문자를 사용하면 비 ASCII 문자와 이름이 일치하지 않기 때문입니다. 그리고 \w
에는 숫자가 포함됩니다. (예 : 'E'와 같은) 비 ASCII 문자와 일치하지 않는 경우
, 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :
>>> def get_name():
... name = raw_input('name: ') #input in python3
... try:
... name.encode('ascii')
... except UnicodeDecodeError:
... print('Bad name!!!')
... return
... if not name.replace(' ', '').isalpha():
... print('Bad name!!!')
... else:
... print('Good name!')
...
>>> get_name()
name: Accented è
Bad name!!!
>>> get_name()
name: The nam3
Bad name!!!
>>> get_name()
name: Guido Van Rossum
Good name!
마지막으로 확인 할 수있는 다른 방법이 하나입니다 :
>>> import string
>>> def good_name(name):
... return not set(name).difference(string.letters + ' ')
...
>>> good_name('Guivo Van Rossum')
True
>>> good_name('Bad Nam3')
False
그리고 당신은이 방법을 사용할 수 있습니다
name = raw_input('name: ') #input in python3
if good_name(name):
#stuff for valid names
else:
#stuff for invalid names
팀 오라일리 (Tim O'Reilly)는 기뻐하지 않을 것이다 그가 당신의 프로그램을 사용하려고합니다.毛澤東도 마찬가지이다. –
@TimPietzcker 나는 이것이 과제를 제안한 교사에게 질문이 될 것이라고 생각한다. –
샘플 코드에서 if 구문에 while 루프를 사용합니다. – Alex