본문 바로가기
자바과정/파이썬

파이썬 입력받은 문자열을 각 집합으로 추출하기

by Parkej 2021. 10. 7.

재밌는 코딩 문제를 경험해봤다. 

 

첫째줄에는 저렇게 문자열을 입력받는 변수가 주어지고 

2, 3, 4, 5 줄 처럼 한글은 한글, 영어는 영어, 숫자는 숫자로 출력하는 문제였다. 

 

문자열 문제는 보통 아스키를 떠올리기 마련이고 대소문자는 upper나 lower 함수를 사용한다. 

 

여러 자료들을 찾아본 결과 파이썬에는 아스키 코드로 변환하는 ord 함수가 있다는 것을 알았다. 

그럼 입력받은 input 값을 ord를 통한 아스키 코드 인식 범위를 넣어주면 원하는 결과를 출력할 수 있지 않을까 생각했다. 

 

또 ord 함수는 문자를 넣어줌으로써 범위를 편하게 지정할 수 있다. 

 

예를 들어 A를 아스키 코드로 출력하면 65라는 값이 나온다. 이는 10진수로 표현되었다. 

 

이를 이용해 코드를 작성해봤다. 

x = input() # 문자열을 입력받는다. 
kor="";eng="";num="";ex=""; # 각각의 집합요소들을 담을 변수 초기화
for c in x: # x에 들어간 문자열 요소를 하나씩 가져온다. 
  if ord('가') <= ord(c) <= ord('힣'): # 가에서 힣 까지의 한글안에 포함된다면
    kor += c
  elif ord('a') <= ord(c.lower()) <= ord('z'): # a~z까지 범위안에 포함된다면, lower는 소문자로 바꿔줌
    eng += c
  elif ord('0') <= ord(c) <= ord('9'): # 0~9까지 범위안에 포함된다면
    num += c
  else: # 나머지는 특수문자로 생각하고 위의 조건문에 포함되지 않은 문자는 특수문자처리
    ex += c

print(kor)
print(eng)
print(num)
print(ex)

 

이렇게 작성을 하고 실행하면 문자하나씩을 꺼내 비교하기때문에 조건문에 알맞는 곳으로 변수에 저장된다. (문자열 이어붙이기) 

반응형

댓글