#1. 아이디 규칙에 맞는 아이디 입력
#2. 입력된 아이디와 유사하면서 규칙 맞는 아이디 추천
#3. 마침표(.) 처음, 끝, 연속 사용 X
#4. 대문자-> 소문자
#5. 소문자, 숫자, 빼기, 밑줄, 마침표 제외 제거
#6. 빈문자열이면 new_id에 a 대입
#7. 길이 16자 이상이면 15개 제외 제거, 마침표가 끝이면 마침표 제거
#8. new_id 길이 2자 이하-> 길이 3이 될때까지 반복
# 아스키코드 : A~Z(65~89) a~z(97~122)
# isalnum() 메소드:
# 문자열이 알파벳([a-zA-Z])과 숫자([0-9])로만 구성되었는지 확인하는 파이썬 문자열 메소드
# replace 함수 숙지
def solution(new_id):
answer = ''
#1단계
new_id = new_id.lower()
#2단계
for word in new_id:
if word.isalnum() or word in '-_.':
answer += word
#3단계
while '..' in answer:
answer = answer.replace('..', '.')
#4단계
if answer[0]=='.' and len(answer)>1:
answer=answer[1:]
if answer[-1]=='.' and len(answer)>1:
answer=answer[:-1]
if answer=='.':
answer=''
#5단계
if answer=='':
answer='a'
#6단계
if len(answer)>=16:
answer=answer[:15]
if answer[-1]=='.':
answer=answer[:-1]
#7단계
if len(answer)==2:
answer=answer+answer[1]
if len(answer)==1:
answer=answer+answer[0]*2
return answer
다른 풀이
def solution(new_id):
answer = ''
# 1
new_id = new_id.lower()
# 2
for c in new_id:
if c.isalpha() or c.isdigit() or c in ['-', '_', '.']:
answer += c
# 3
while '..' in answer:
answer = answer.replace('..', '.')
# 4
if answer[0] == '.':
answer = answer[1:] if len(answer) > 1 else '.'
if answer[-1] == '.':
answer = answer[:-1]
# 5
if answer == '':
answer = 'a'
# 6
if len(answer) > 15:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:-1]
# 7
while len(answer) < 3:
answer += answer[-1]
return answer
내용 복습
replace()
- 문자열 안에서 특정 문자를 새로운 문자로 변경
>>> a = 'hello world'
>>> a.replace('hello','hi')
hi world
while '..' in answer:
answer = answer.replace('..', '.')
isalnum()
- 문자열이 알파벳([a-zA-Z])과 숫자([0-9])로만 구성되었는지 확인
for word in new_id:
if word.isalnum() or word in '-_.':
answer += word
isalpha()
- 문자열이 알파벳([a-zA-Z])으로만 구성되었는지 확인하는 파이썬 문자열 메소드
print( 'abcD'.isalpha() )
islower()
print( 'abcd123#'.islower() )
# True
isupper()
print( 'ABCD123#'.isupper() )
True
isdigit()
print( '1234'.isdigit() )
# True
print( '123edsd'.isdigit() )
# False
upper(), lower() : 대소문자 변환
str1 = 'Hello'
str2 = 'WORLD'
print(str1.upper())
print(str1.lower())
print(str2.upper())
print(str2.lower())