Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 내장 함수 없이 대문자·소문자 개수 세기

이 글에서는 아래 문제 상황에 대한 해결 방법을 단계별로 알아보겠습니다.

문제 정의

하나의 문자열이 주어졌을 때, 파이썬의 내장 함수를 사용하지 않고 해당 문자열에 포함된 대문자소문자의 개수를 각각 세는 것이 목표입니다.

사실 파이썬에서 기본 제공하는 islower()isupper() 함수를 활용하면 이 문제를 매우 쉽게 해결할 수 있습니다. 하지만 이번 문제에는 "내장 함수를 사용하지 말 것"이라는 제약 조건이 있습니다. 그래서 여기서는 문자의 ASCII 값을 활용하는 방식으로 접근합니다.

ord() 함수를 이용해 문자열의 각 문자에 대한 ASCII 값을 구한 뒤, 그 값이 어느 범위에 속하는지 비교하여 대문자인지 소문자인지 판별합니다.

  • 소문자 a ~ z : ASCII 97 ~ 122
  • 대문자 A ~ Z : ASCII 65 ~ 90

예제 코드

def upperlower(string):
    upper = 0
    lower = 0
    for i in range(len(string)):
        # 소문자 판별
        if (ord(string[i]) >= 97 and
            ord(string[i]) <= 122):
            lower += 1
        # 대문자 판별
        elif (ord(string[i]) >= 65 and
            ord(string[i]) <= 90):
            upper += 1
    print('Lower case characters = '+str(lower))
    print('Upper case characters = '+str(upper))
# Driver Code
string = 'TutorialsPoint'
upperlower(string)

실행 결과

Lower case characters = 12
Upper case characters = 2

예제에서 사용한 문자열 'TutorialsPoint'에는 대문자 T와 P 두 글자가 포함되어 있으므로 대문자 개수는 2, 나머지 12개의 알파벳은 모두 소문자로 계산됩니다.

코드에 등장하는 모든 변수는 지역 스코프(local scope) 안에서 선언되며, 위 그림에서 각 변수의 참조 관계를 확인할 수 있습니다.

마무리

이번 글에서는 내장 함수를 사용하지 않고, ord() 함수로 얻은 ASCII 값을 비교하는 방식으로 주어진 문자열 안의 대문자와 소문자 개수를 세는 방법을 살펴보았습니다. 이러한 접근은 문자 분류 로직의 내부 동작 원리를 깊이 이해하는 데 큰 도움이 되며, 다른 프로그래밍 언어에서도 동일한 원리를 응용할 수 있습니다.