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

파이썬으로 문자열이 팬그램(Pangram)인지 확인하는 방법

이 글에서는 주어진 문제 상황을 해결하기 위한 접근 방식과 그 구현 방법에 대해 알아보겠습니다.

문제 정의

하나의 문자열이 입력으로 주어졌을 때, 해당 문자열이 팬그램(Pangram)인지 아닌지를 판별하는 파이썬 프로그램을 작성해야 합니다.

팬그램이란 영어 알파벳 26개 글자(a~z)를 모두 포함하고 있는 문장 또는 단어들의 나열을 의미합니다. 대표적인 예로 "The quick brown fox jumps over the lazy dog" 같은 문장이 있습니다.

해결 접근 방식

이 문제는 다음과 같은 방식으로 해결할 수 있습니다.

  • 알파벳 전체를 담은 기준 문자열을 직접 선언합니다.
  • 기준 문자열의 각 알파벳이 입력 문자열(소문자로 변환) 안에 존재하는지 하나씩 검사합니다.
  • 단 하나라도 누락된 알파벳이 있다면 팬그램이 아니므로 False를 반환합니다.
  • 모든 알파벳이 존재한다면 True를 반환합니다.

구현 예제

import string

def ispangram(str):
    alphabet = "abcdefghijklmnopqrstuvwxyz"
    for char in alphabet:
        if char not in str.lower():
            return False
    return True

# main
string = 'The five boxing wizards jump quickly.'
if(ispangram(string) == True):
    print("Yes")
else:
    print("No")

출력 결과

Yes

코드 설명

위 코드에서는 파이썬의 멤버십 연산자(in)를 활용해 내부적으로 두 개의 반복 과정을 수행합니다. 먼저 알파벳 문자열을 순회하면서, 각 글자가 입력 문자열의 소문자 버전에 포함되어 있는지 확인합니다.

입력 문자열에 str.lower()를 적용하는 이유는, 대소문자 구분 없이 알파벳 포함 여부를 검사하기 위함입니다. 예제 문장 "The five boxing wizards jump quickly."는 26개 알파벳을 모두 포함하고 있으므로 결과로 "Yes"가 출력됩니다.

참고로 이 예제에서 변수와 함수는 모두 전역 범위(global scope)에 선언되어 있으며, 필요에 따라 함수 내부로 옮겨 캡슐화할 수도 있습니다.

마무리

이번 글에서는 파이썬을 활용해 주어진 문자열이 팬그램인지 판별하는 방법을 살펴보았습니다. 멤버십 연산자와 간단한 반복문만으로도 효율적으로 구현할 수 있으며, 집합(set) 자료형을 이용해 set(alphabet) <= set(str.lower())처럼 더 간결하게 작성하는 방법도 있습니다.