파이썬 알파벳 숫자 - paisseon alpabes susja

  문제

알파벳으로 이루어진 문자열을 입력 받아 각 알파벳을 1부터 26까지의 숫자로 변환하여 출력하라.

  풀이

container=input()
for i in container:
    ans=ord(i)-64
    print(ans,end=" ")

ord() 함수는 유니코드 문자에 대응되는 정수를 표현한다. 대문자 A는 65에 해당된다. 따라서 ord("A") - 64를 하는 경우 1이 된다.

container 변수를 통해 입력을 받는다. 이 때 ABCDEFGHIJKLMNOPQRSTUVWXYZ 문자열을 받게 된다.

입력받은 문자열을 for문을 통해 for i in container:를 사용하면, for문의 i는 문자열 하나 하나를 읽는다.

따라서 i = A, B, C, D,....,Z로 차례대로 입력된다.

입력된 문자열을 ord() 함수를 통해 정수형으로 바꿔주고, 이 값에 -64를 빼면 원하는 답이 나오게 된다.

저작자표시비영리변경금지

'파이썬 > 파이썬 알고리즘' 카테고리의 다른 글

[swea - 파이썬] 2025. N줄덧셈  (0) 2021.07.19
[swea - 파이썬] 1933. 간단한 N 의 약수  (0) 2021.07.19
[swea - 파이썬] 2068. 최대수 구하기  (0) 2021.07.19
[swea - 파이썬] 2046. 스탬프 찍기  (0) 2021.07.19
[swea - 파이썬] 1545. 거꾸로 출력해 보아요  (0) 2021.07.14

- 순서 -
1. 아스키코드 설명
2. ord( )
3. chr( )


1. 아스키코드(ascii)

아스키는 미국 정보교환 표준 부호 (American Standard Code for Information Interchange)이다. 줄여서는 ASCII라고 표현한다. 말 그대로 정보를 교환하는 부호인 것이다. 문자열이나 기호를 컴퓨터에 이용하기 위해서는 컴퓨터에 전달할 수 있도록 코드화, 부호화해야 하고 그런 과정을 문자 인코딩이라고 한다.

아스키코드는 기호와 영문알파벳에 적합한 문자 인코딩이다. 아스키코드가 영문알파벳과 기호에 적합한 이유는 7비트 인코딩이기 때문이다. 7비트 인코딩으로 표현 가능한 것은 0부터 127까지 총 128개로 그 범위 안에 할당된 값은 기호와 영문 알파벳만이 해당된다. 한글과 같이 크기가 큰 문자는 인코딩하기에 적합하지 않은 것이다. 

파이썬에서 한글을 아스키코드로 변환을 해본적은 있다. 에러 없이 변환이 되기는 하는데 숫자가 굉장히 크다. 아스키코드에 부여된 범위를 넘어서는 숫자가 출력되기에 그 뒤로 또 시도해보진 않았다.  

0~127까지의 숫자를 모두 기호와 영문알파벳으로 사용하는 것은 아니다. 32까지의 숫자는 제어용 언어로 알고 있다. 이후에 3번부터 기호로 시작한다. 영어 대문자는 65~90으로 나타내고 소문자는 97~122로 나타낼 수 있다. 아래 사용 예시에서 해당 숫자를 이용해 문자를 출력하는 것을 예시를 들어보겠다.

32~127번까지 10진수와 부호의 짝을 정리한 아스키코드 표를 첨부한다. 내가 만든 것은 아니다. 나무위키에서 가지고 온 표이다.

파이썬 알파벳 숫자 - paisseon alpabes susja
아스키코드표

출처: 나무위키

계속해서 아스키코드 변환을 할 수 있는 함수 ord, chr에 대해 설명한다.

2. ord( )

문자열을 아스키코드로 반환할 수 있는 함수이다. 

ord(c) 형태로 이용한다. 괄호( ) 안에 문자를 넣으면 그 문자에 해당하는 아스키코드를 숫자로 반환한다. 

사용 예시

>>> ord('a')
97

>>> ord('z')
122

위 아스키코드표에서 본 것과 마찬가지로 소문자 a에 대한 값은 97, z에 대한 값은 122가 출력되었다.

그리고 97 ~ 122 사이의 숫자가 각각 알파벳 소문자 a~z를 나타낸다. 이 숫자를 for문을 이용해서 문자로 출력할 수 있다.

>>> for i in range(97,123):
>>>     print(chr(i), end=' ')
a b c d e f g h i j k l m n o p q r s t u v w x y z

3. chr( )

아스키코드를 문자열로 변환하는 함수이다. 

chr(i) 형태로 이용한다. 괄호( ) 안에 숫자를 넣으면 그 숫자의 아스키코드에 대응하는 문자를 반환한다.

사용 예시

>>> chr(65)
A

>>> chr(90)
Z

이번엔 대문자를 출력할 수 있도록 65와 90을 사용해보았다. 소문자와 마찬가지로 for문을 이용해서 A부터 Z까지를 표현하거나 그중 일부만 나타낼 수도 있다. 

파이 참 문서

ord
def ord(__c: Union [str, bytes]) -> int
--------------------
Return the Unicode code point for a one-character string.

chr
def chr(__i: int) -> str
--------------------
Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10 ffff.

앱피아

Python/Python 응용

파이썬[Python] 알파벳/숫자인지 확인하기(isalpha, isdigit, isalnum)

끔손 2020. 3. 14. 06:58

최근에 문자열에서 알파벳의 빈도를 확인하는 방법에 대해서 간단하게 포스팅을 했었던 적이 있습니다. 이번에는 그와 유사하게 문자열이 알파벳인지 확인하는 방법, 또는 숫자인지 확인하는 방법, 그리고 알파벳 또는 숫자인지 확인하는 방법에 대해서 3가지로 나누어 살펴보고자 합니다. 이 부분에 대해서는 별도의 모듈 없이 기본 내장 되어 있는 함수를 통해서 확인이 가능합니다. 

알파벳인지 확인하기(isalpha) 

문자열의 구성이 알파벳인지에 대해서 확인하는 방법입니다. 저는 isalpha()내장 함수를 사용할 것입니다. 하지만, 단 주의가 필요합니다. 문자열에 숫자 및 공백이 포함되어 있으면 False를 리턴합니다. 그럼 다음 예제를 한번 살펴보겠습니다. 

example)

# Appia Example for isalpha

# It is to explain how to check whether the string consist of alphabet or not.

Ex1 = 'A'

Ex2 = 'ABC'

Ex3 = "앱피아"

Ex4 = "Hello Appia"

Ex5 = "100Appia"

#print the is the result for isalpha()

print(Ex1.isalpha())

print(Ex2.isalpha())

print(Ex3.isalpha())

print(Ex4.isalpha())

print(Ex5.isalpha())

cs

result) 

결과를 보시면 다음과 같이 한글을 지원하는 것을 알 수 있습니다. 저의 경우 오래동안 파이썬 2점대 버전을 사용하다 보니, 자연스럽게 영어로만 사용을 했습니다.(파이썬 2점대 버전은 한글을 미지원) 다음과 같은 부분을 조심해야 합니다. 즉, 공백이 있는 경우나, 숫자와 혼용되어 사용되면, False를 리턴합니다.  

숫자인지 확인하기(isdigit)

문자열의 구성이 모두 숫자인지 확인하는 메소드를 사용할 것입니다. 그 메소드는 isdigit()입니다. 위와 동일하게 이 메소드의 리턴값도 boolean형태입니다. 그럼 다음 예제를 한번 살펴보겠습니다. 

example)

# Appia Example for isalpha

# It is to explain how to check whether the string consist of digit or not.

Ex1 = '010-1234-5678'

Ex2 = '123456'

Ex3 = "R4R3"

print(Ex1.isdigit())

print(Ex2.isdigit())

print(Ex3.isdigit())

cs

result)

먼저, Ex1과 같이 -등이 사용되면, 숫자로만 구성된 것이 아니기 때문에 관련해서 False로 사용됩니다. 또한 Ex3과 같이 문자과 혼용되어 사용되어도 False로 리턴됩니다. 

알파벳 또는 숫자인지 확인하기(isalnum) 

문자열이 알파벳인지 확인하는 방법, 또는 숫자인지 확인하는 방법은 생각보다 많이 사용되지 않습니다. 다양한 이유가 있겠지만, 문자열 구성에는 생각보다 숫자와 문자가 혼용되는 경우가 매우 많기 때문입니다. 그래서 위의 이 두가지를 혼용해서 문자열이 알파벳 또는 숫자인지 확인하는 방법에 대해서 살펴보겠습니다. 

example) 

# Appia Example for isalpha

# It is to explain how to check whether the string consist of digit/alphabet or not.

Ex1 = '안녕'

Ex2 = 'Hello3'

Ex3 = "1.Where"

Ex4 = "1 Where"

print(Ex1.isalnum())

print(Ex2.isalnum())

print(Ex3.isalnum())

print(Ex4.isalnum())

cs

result)

앞서서 본바와 같이 공백과 특수 문자로 인해서 다음과 같은 경우에 False를 나타냅니다. 위의 문자열이 알파벳인지 확인하는 방법, 또는 숫자인지 확인하는 방법 교집합 형태로 보시면 조금 더 이해가 쉬울 것입니다. 

오늘 포스팅은 문자열이 알파벳인지 확인하는 방법, 또는 숫자인지 확인하는 방법, 그리고 알파벳 또는 숫자인지 확인하는 방법에 대해 살펴봤습니다. 생각보다 코딩할 때 다음과 같은 조건에 대해서 많이 사용하게 됩니다. 혹시 궁금하시거나 문의사항이 있으면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다.