기타

한글 입력이 올바른지 알아보는 파이썬 코드

비숑주인 2023. 5. 14. 16:36
def is_valid_hangul_input(input_str):
    """
    한글 입력이 올바른지 확인하는 함수

    Parameters
    ----------
    input_str : str
        한글 입력 문자열

    Returns
    -------
    bool
        올바른 입력이면 True, 그렇지 않으면 False
    """
    for char in input_str:
        # 한글 음절의 범위는 '\uAC00' ~ '\uD7A3' 입니다.
        if '\uAC00' <= char <= '\uD7A3':
            # 각 음절의 초성, 중성, 종성 유니코드 값 범위를 계산합니다.
            char_code = ord(char) - 0xAC00
            jongseong = char_code % 28
            junseong = ((char_code - jongseong) // 28) % 21
            choseong = (((char_code - jongseong) // 28) - junseong) // 21
            
            # 초성, 중성, 종성 범위에 속하지 않으면 False를 반환합니다.
            if not (0 <= choseong <= 18 and 0 <= junseong <= 20 and 0 <= jongseong <= 27):
                return False
        else:
            # 한글 음절이 아니면 False를 반환합니다.
            return False
    return True

 

위 코드에서는 입력된 문자열을 순회하면서 각각의 문자가 한글 유니코드 범위인 '\uAC00' ~ '\uD7A3' 에 속하는지 확인한다. 그리고 초성, 중성, 종성의 유니코드 값 범위를 계산하여 각각의 범위에 속하는지 확인한다. 초성, 중성, 종성의 범위에 속하지 않는 문자가 있으면 False를 반환하고, 모든 문자가 한글 음절의 범위에 속하고 초성, 중성, 종성 범위에 속한다면 True를 반환한다

 

input_str = input("한글 입력을 입력하세요: ")
if is_valid_hangul_input(input_str):
    print("올바른 입력입니다.")
else:
    print("잘못된 입력입니다.")