본문 바로가기
프로그래밍/Python

[Python] ord 내장 함수 : 한 문자를 유니코드로 변환

by 빛밤하늘 2021. 5. 31.
반응형

백준에 있는 문제들을 풀면서 알파벳이나 숫자들을 유니코드로 변환해서 푸는 문제들이 많이 나왔습니다.

파이썬에는 유니코드와 관련된 문제들을 해결하기 위해

한 문자를 유니코드로 변환하는 ord 내장 함수

유니코드를 한 문자로 변환하는 chr 내장 함수가 있습니다.

ord, chr 내장 함수는 사용법과 그 결과가 매우 간단하므로 정리해서 포스팅하고자 합니다.

 

밑의 링크들은 백준에 있는 문제들 중 ord, chr 함수를 사용해서 푼 문제들입니다.

 

[백준][solved.ac][Bronze 2][Python] 6321번 : IBM 빼기 1

6321번: IBM 빼기 1 첫째 줄에 컴퓨터의 개수 n이 주어진다. 다음 줄부터 n개의 줄에는 컴퓨터의 이름이 주어진다. 컴퓨터의 이름은 최대 50글자이며, 알파벳 대문자로만 이루어져 있다. www.acmicpc.net

brightnightsky77.tistory.com

 

[백준][solved.ac][Bronze 2][Python] 5598번 : 카이사르 암호

5598번: 카이사르 암호 가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였습니다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으

brightnightsky77.tistory.com

 

[백준][solved.ac][Silver 5][Python] 16171번 : 나는 친구가 적다 (Small)

16171번: 나는 친구가 적다 (Small) 첫 번째 줄에는 알파벳 소문자, 대문자, 숫자로 이루어진 문자열 S가 주어진다. (1 ≤ |S| ≤ 100) 두 번째 줄에는 성민이가 찾고자 하는 알파벳 소문자, 대문자로만

brightnightsky77.tistory.com

 

[백준][solved.ac][Bronze 1][Python] 12778번 : CTP공국으로 이민 가자

12778번: CTP공국으로 이민 가자 신생국가 CTP공국은 자신들만의 글자가 없다. CTP공국의 왕 준형이는 전 세계 표준 언어인 알파벳을 사용하기로 했다. 하지만 숫자에 미친 사람들이 모인 CTP공국 주

brightnightsky77.tistory.com

제 블로그에 위의 네 문제말고도 chr, ord 함수를 활용해서 푼 문제들이 더 있으니 

더 많은 풀이를 보시고 싶은 분은 블로그 내에서 ord나 chr로 검색해 둘러보시면 됩니다.

 

 

1. 유니코드

유니코드는 '전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준'입니다.

 

쉽게 표현하면 전 세계의 언어 및 여러 특수 기호들 한 글자 한 글자들을

각각 서로 다른 하나의 숫자로 연결시켜서 표현한 것입니다.

예를 들면, 유니코드에서 알파벳 대문자 A는 65, B는 66, 소문자 a는 97, b는 98이라는 숫자로 연결되어 있습니다.

 

그래서 맨 상단의 알고리즘 문제들과 같이 어떤 글자와 숫자를 관계지어야 할 때,

이 유니코드를 통해서 쉽게 해결할 수 있습니다.

그리고 우리나라에서는 자판을 보더라도 한글과 영어만 기본적으로 사용할 수 있지만,

일본어나 중국어 등 다른 나라의 언어를 사용하고 싶다거나, 자판에 없는 매우 특수한 기호들을 사용하고 싶다면

유니코드를 통해 다른 나라의 언어 및 자판에 없는 특수 기호들을 사용할 수 있습니다.

 

일단, 이번 포스팅은 파이썬의 ord 내장 함수를 중점으로 다루는 포스팅이므로 이 정도로만 정리하고

유니코드 자체에 대한 더 자세한 내용은 나중에 따로 포스팅해보겠습니다.

 

밑은 유니코드에 관한 위키백과 링크입니다.

 

유니코드 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 유니의 음반에 대해서는 U;Nee Code 문서를 참고하십시오. 유니코드(영어: Unicode)는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된

ko.wikipedia.org

 

 

2. ord 내장 함수

2-1. 사용법과 결과

ord 내장 함수의 사용법은 다음과 같습니다.

 

  • ord('유니코드로 표현할 문자 1개')

 

코드를 실행시키면 매개변수에 넣은 문자 1개에 대한 유니코드 숫자를 반환합니다.

 

 

2-2. 공식 문서

밑의 링크는 파이썬 내장 함수들에 대한 파이썬 공식 문서 페이지입니다.

여기서 ord 내장 함수에 대한 공식 문서 내용을 찾을 수 있습니다.

 

내장 함수 — Python 3.9.5 문서

내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __

docs.python.org

 

 

2-3. 실행 결과

2-3-1. 숫자 형태의 문자 0 ~ 9를 유니코드로 변환

밑의 코드와 결과는 숫자 형태의 문자 0 ~ 9를 유니코드로 변환한 결과입니다.

# 숫자 형태의 문자 0 ~ 9를 각각 유니코드로 변환해봅니다.
print("숫자 형태의 문자 0을 유니코드로 변환:", ord('0'))
print("숫자 형태의 문자 1을 유니코드로 변환:", ord('1'))
print("숫자 형태의 문자 2를 유니코드로 변환:", ord('2'))
print("숫자 형태의 문자 3을 유니코드로 변환:", ord('3'))
print("숫자 형태의 문자 4를 유니코드로 변환:", ord('4'))
print("숫자 형태의 문자 5를 유니코드로 변환:", ord('5'))
print("숫자 형태의 문자 6을 유니코드로 변환:", ord('6'))
print("숫자 형태의 문자 7을 유니코드로 변환:", ord('7'))
print("숫자 형태의 문자 8을 유니코드로 변환:", ord('8'))
print("숫자 형태의 문자 9을 유니코드로 변환:", ord('9'))

숫자 형태의 문자 0 ~ 9를 유니코드로 변환한 결과

숫자 형태의 문자 0 ~ 9를 ord 내장 함수에 넣으면, 10진법 숫자 48 ~ 57로 반환됩니다.

 

참고로 ord 내장 함수는 한 글자의 문자를 매개변수로 받으므로,

문자 0 ~ 9 대신 정수형(int) 숫자 0 ~ 9를 ord 내장 함수에 넣으면

정수형 데이터 대신 한 글자의 문자를 넣으라는 TypeError 오류가 발생합니다.

# 숫자 0을 유니코드로 변환해봅니다.
print("숫자 0을 유니코드로 변환:", ord(0))

ord 내장 함수의 매개변수에 정수형 숫자를 넣어서 발생하는 오류

 

2-3-2. 알파벳 대문자 A~Z를 유니코드로 변환

밑의 코드와 결과는 알파벳 대문자 A ~ Z를 유니코드로 변환한 것입니다.

# 알파벳 대문자 A ~ Z를 유니코드로 변환해봅니다.
print("알파벳 대문자 A를 유니코드로 변환:", ord('A'))
print("알파벳 대문자 B를 유니코드로 변환:", ord('B'))
print("알파벳 대문자 C를 유니코드로 변환:", ord('C'))
print("알파벳 대문자 D를 유니코드로 변환:", ord('D'))
print("알파벳 대문자 E를 유니코드로 변환:", ord('E'))
print("알파벳 대문자 F를 유니코드로 변환:", ord('F'))
print("알파벳 대문자 G를 유니코드로 변환:", ord('G'))
print("알파벳 대문자 H를 유니코드로 변환:", ord('H'))
print("알파벳 대문자 I를 유니코드로 변환:", ord('I'))
print("알파벳 대문자 J를 유니코드로 변환:", ord('J'))
print("알파벳 대문자 K를 유니코드로 변환:", ord('K'))
print("알파벳 대문자 L을 유니코드로 변환:", ord('L'))
print("알파벳 대문자 M을 유니코드로 변환:", ord('M'))
print("알파벳 대문자 N을 유니코드로 변환:", ord('N'))
print("알파벳 대문자 O를 유니코드로 변환:", ord('O'))
print("알파벳 대문자 P를 유니코드로 변환:", ord('P'))
print("알파벳 대문자 Q를 유니코드로 변환:", ord('Q'))
print("알파벳 대문자 R을 유니코드로 변환:", ord('R'))
print("알파벳 대문자 S를 유니코드로 변환:", ord('S'))
print("알파벳 대문자 T를 유니코드로 변환:", ord('T'))
print("알파벳 대문자 U를 유니코드로 변환:", ord('U'))
print("알파벳 대문자 V를 유니코드로 변환:", ord('V'))
print("알파벳 대문자 W를 유니코드로 변환:", ord('W'))
print("알파벳 대문자 X를 유니코드로 변환:", ord('X'))
print("알파벳 대문자 Y를 유니코드로 변환:", ord('Y'))
print("알파벳 대문자 Z를 유니코드로 변환:", ord('Z'))

알파벳 대문자 A ~ Z를 유니코드로 변환한 결과

알파벳 대문자 A ~ Z를 ord 내장 함수에 넣으면, 10진법 숫자 65 ~ 90으로 반환됩니다.

2-3-3. 알파벳 소문자 a ~ z를 유니코드로 변환

밑의 코드와 결과는 알파벳 소문자 a ~ z를 유니코드로 변환한 것입니다.

# 알파벳 소문자 a ~ z를 유니코드로 변환해봅니다.
print("알파벳 소문자 a를 유니코드로 변환:", ord('a'))
print("알파벳 소문자 b를 유니코드로 변환:", ord('b'))
print("알파벳 소문자 c를 유니코드로 변환:", ord('c'))
print("알파벳 소문자 d를 유니코드로 변환:", ord('d'))
print("알파벳 소문자 e를 유니코드로 변환:", ord('e'))
print("알파벳 소문자 f를 유니코드로 변환:", ord('f'))
print("알파벳 소문자 g를 유니코드로 변환:", ord('g'))
print("알파벳 소문자 h를 유니코드로 변환:", ord('h'))
print("알파벳 소문자 i를 유니코드로 변환:", ord('i'))
print("알파벳 소문자 j를 유니코드로 변환:", ord('j'))
print("알파벳 소문자 k를 유니코드로 변환:", ord('k'))
print("알파벳 소문자 l을 유니코드로 변환:", ord('l'))
print("알파벳 소문자 m을 유니코드로 변환:", ord('m'))
print("알파벳 소문자 n을 유니코드로 변환:", ord('n'))
print("알파벳 소문자 o를 유니코드로 변환:", ord('o'))
print("알파벳 소문자 p를 유니코드로 변환:", ord('p'))
print("알파벳 소문자 q를 유니코드로 변환:", ord('q'))
print("알파벳 소문자 r을 유니코드로 변환:", ord('r'))
print("알파벳 소문자 s를 유니코드로 변환:", ord('s'))
print("알파벳 소문자 t를 유니코드로 변환:", ord('t'))
print("알파벳 소문자 u를 유니코드로 변환:", ord('u'))
print("알파벳 소문자 v를 유니코드로 변환:", ord('v'))
print("알파벳 소문자 w를 유니코드로 변환:", ord('w'))
print("알파벳 소문자 x를 유니코드로 변환:", ord('x'))
print("알파벳 소문자 y를 유니코드로 변환:", ord('y'))
print("알파벳 소문자 z를 유니코드로 변환:", ord('z'))

알파벳 소문자 a ~ z를 유니코드로 변환한 결과

알파벳 소문자 a ~ z를 ord 내장 함수에 넣으면, 10진법 숫자 97 ~ 122로 반환됩니다.

 

2-3-4. 기타 문자들을 유니코드로 변환

밑의 코드와 결과는 공백, 한글, 특수문자들을 유니코드로 변환한 것입니다.

# 기타 문자들을 유니코드로 변환해봅니다.
print("공백 ' '을 유니코드로 변환:", ord(' '))
print("--------------------------------------")
print("한글 '가'를 유니코드로 변환:", ord('가'))
print("한글 '나'를 유니코드로 변환:", ord('나'))
print("한글 '다'를 유니코드로 변환:", ord('다'))
print("한글 '라'를 유니코드로 변환:", ord('라'))
print("한글 '마'를 유니코드로 변환:", ord('마'))
print("한글 '빛'을 유니코드로 변환:", ord('빛'))
print("한글 '밤'을 유니코드로 변환:", ord('밤'))
print("한글 '하'를 유니코드로 변환:", ord('하'))
print("한글 '늘'을 유니코드로 변환:", ord('늘'))
print("한글 '블'을 유니코드로 변환:", ord('블'))
print("한글 '로'를 유니코드로 변환:", ord('로'))
print("한글 '그'을 유니코드로 변환:", ord('그'))
print("--------------------------------------")
print("특수문자 백틱 '`'을 유니코드로 변환:", ord('`'))
print("특수문자 물결표 '~'를 유니코드로 변환:", ord('~'))
print("특수문자 느낌표 '!'를 유니코드로 변환:", ord('!'))
print("특수문자 골뱅이 '@'를 유니코드로 변환:", ord('@'))
print("특수문자 샵 '#'을 유니코드로 변환:", ord('#'))
print("특수문자 달러 '$'를 유니코드로 변환:", ord('$'))
print("특수문자 퍼센트 '%'을 유니코드로 변환:", ord('%'))

공백, 한글, 특수문자들을 유니코드로 변환한 결과

 

2-3-5. ord 내장 함수의 매개변수에 여러 글자의 문자열을 넣은 경우

밑의 코드와 결과는 ord 내장 함수에 여러 글자의 문자열을 유니코드로 변환 시도해본 것입니다.

ord 내장 함수의 매개변수에는 한 글자의 문자만 들어갈 수 있으므로,

ord 내장 함수에는 한 글자의 문자만 넣으라는 TypeError 오류가 발생합니다.

# 한 글자가 아닌 여러 글자의 문자열을 유니코드로 변환 시도해봅니다.
print("여러 글자의 문자열을 유니코드로 변환 시도:", ord("abcd"))

ord 내장 함수 매개변수에 여러 글자의 문자열을 넣어서 발생하는 오류

 

 

[Python] chr 내장 함수 : 유니코드를 한 문자로 변환

2021.05.31 - [프로그래밍/Python] - [Python] ord 내장 함수 : 한 문자를 유니코드로 변환 [Python] ord 내장 함수 : 한 문자를 유니코드로 변환 백준에 있는 문제들을 풀면서 알파벳이나 숫자들을 유니코드로

brightnightsky77.tistory.com

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

반응형

댓글