Cute Running Puppy

Python

Python_11Day

jwjin 2019. 2. 27. 22:40
728x90

# 문자열

요약 - 문자열의 형태는 str입니다. 리스트처럼 index에 의한 접근이 가능하고 반복문을 이용할 수 있습니다. 리스트를 자르는것도 가능

문자열은 보통 아스키코드를 이용하여 나타냅니다. 또 아스키코드를 이용한 숫자를 문자로 바꿀수도 있습니다.

문자열 검사 - ?.upper() : 대문자 변환 / ?.lower() : 소문자 변환 / ?.capitalize() : 첫글자만 대문자 처리

?startswith(??) : ??로 시작 됩니까? / ?.endswith(??) : ??으로 종료됩니까? / ?.count(??) : ??가 몇번 있습니까? / ?.index(??) : ??가 어디있나요?

ord()는 해당하는 문자를 숫자로 바꾸는 역할을 합니다. (아스키코드 이용)

숫자를 문자로(글자화) 바꾸는 방법입니다.

형태는 chr(숫자) 입니다. 한글의 '가' 는 아스키코드를 이용하여 숫자로 나타내면 44032입니다.

따라서 숫자 44032를 a라 저장하고 chr(a)를 써보면 '가' 가 나타납니다.

다르게 나타내 봅시다. 영어 대문자 A를 저장해놓고 A를 숫자로 바꾼다음 +3을 하고 그리고 또 이것을 문자로 바꾼다면?

b = 'A'
c = chr(ord(b) + 3)

알파벳 순서로 따지면 A에서 3문자를 더간 D 가 나타납니다.

'''
사용자에게 닉네임을 입력받아서 형식을 검사하세요

규칙
1. 닉네임은 2글자 이상 6글자 이하가 아니면 설정이 불가합니다.
2. 닉네임은 한글로만 작성할 수 있습니다.
3. 닉네임에는 '운영자'라는 단어가 포함될 수 없습니다.
'''



nickname = input('닉네임을 입력하세요 : ')

# 1번 조건
length = 2 <= len(nickname) <= 6

# 2번 조건
count = 0
for i in nickname :
if ord('가') <= i <= ord('힣') :
count += 1
else :
break
korean = len(nickname) == count


# 3번 조건
admin = nickname.count('운영자') > 0

# 최종 검사 결과
result = length and korean and not admin



if result :
print('닉네임 설정이 완료되었습니다')
else :
print('닉네임은 2에서 6자 이내로 작성하시고 운영자는 포함하실 수 없습니다')

예시 문제입니다. 한글은 가 부터 힣까지 조합형으로 존재합니다. 아스키코드는 가 : 44032 ~ 힣 : 55203

조건은 닉네임이 2글자 이상 6글자 이하여야 하고 한글로만 작성가능, 그리고 운영자라는 단어가 포함될 수 없다 되있습니다.

1번조건부터 해보면 우선 길이(글자 수)는 len()으로 측정하기 때문에 len()에 사용자가 입력하는 닉네임을 넣어줍니다.

이때 길이는 2이상 6이하이기 때문에 식을 위에처럼 써줍니다.

2번조건은 영어가 아닌 한글로만 작성가능 하다는 조건입니다. 영어와 한글은 아스키코드가 다르죠. 

하지만 아스키코드를 알지 못해도 식을 작성할 수 있습니다. 문자를 숫자로 바꿔주는 ord()를 쓰면 됩니다.

우선 반복문을 써주고 i는 ord(가) 이상 ord(힣)이하 라 씁니다. 이렇게 바꿔주면 아스키코드를 이용한 숫자가 나옵니다.

(44032 와 55203 이 나옴) 

마지막 3번조건 입니다. 운영자라는 글자가 있으면 안된다는 조건인데요 이 경우에는 count를 쓰면 됩니다. 

운영자라는 글자가 있습니까(몇번있습니까 랑 같은의미)? 라는 질문이기 때문입니다. 결과에는 not 을 쓸것이기 때문에 0이상이라 해줍니다.

다음으로 결과를 위의 조건들을 한번에 조합해줍니다. 그리고 if문에 이 결과가 맞으면 닉네임 설정이 완료되었다 라고 출력하게 하고

틀리면 조건이 틀렸다 출력하게 합니다. 


** 문자열 편집 기능 **

- 잘라내기 / - 공백제거 / - 분리

잘라내기 - index사용 ex) ?[:3]  : 3칸까지 잘라라

공백제거 - 왼쪽만 제거 : lstrip() / 오른쪽만 제거 : rstrip() / 전체 제거 : strip() 

분해 - split() 이용












728x90

'Python' 카테고리의 다른 글

Python_13Day  (0) 2019.03.04
Python_12Day  (0) 2019.02.28
Python_10Day  (0) 2019.02.26
Python_09Day  (0) 2019.02.25
Python_08Day  (0) 2019.02.22