파이썬(Python)

[ 파이썬 한글 자동화 ] 숫자를 금액으로 바꾸기 : 금100,000원으로 바꾸기

카루루1007 2024. 10. 14. 00:50
728x90
반응형

금액을 표시할 때 

맨 앞에 [ ]을 붙이고 숫자를 표시한 다음 맨 뒤에 [ ]을 붙입니다.

그리고 숫자천 단위마다 쉼표를 넣습니다.

 

100000 → 금10,000원

10000원 → 금10,000원

10,000원 → 금10,000원 

 

이 내용을 구현한 파이썬 코드입니다.

 

반응형

 전체코드

 

def add_commas(number):
    return f"{int(number):,}"

def format_currency(input_str):
    if input_str.startswith("금"):
        if input_str.endswith("원"):
            number_part = input_str[1:-1].replace(",", "")
            formatted_number = add_commas(number_part)
            return f"금{formatted_number}원"
        else:
            number_part = input_str[1:].replace(",", "")
            formatted_number = add_commas(number_part)
            return f"금{formatted_number}원"

    if input_str.endswith("원"):
        number = input_str[:-1]
    else:
        number = input_str

    formatted_number = add_commas(number)
    return f"금{formatted_number}원"

 

 코드설명

 

아래 함수숫자를 전달받아 천 단위마다 쉼표를 넣어줍니다.

format_currency() 함수에서 호출되면,

숫자를 받아 천 단위마다 쉼표를 넣고 값을 반환합니다.

def add_commas(number):
    return f"{int(number):,}"

 

아래코드는 다음과 같은 역할을 수행합니다.

def format_currency(input_str):
    if input_str.startswith("금"):
        if input_str.endswith("원"):
            number_part = input_str[1:-1].replace(",", "")
            formatted_number = add_commas(number_part)
            return f"금{formatted_number}원"
        else:
            number_part = input_str[1:].replace(",", "")
            formatted_number = add_commas(number_part)
            return f"금{formatted_number}원"

먼저 코드의 아래 부분은 입력받은 문자열이 

[ 금 ]으로 시작하고, [ 원 ]으로 끝나면

input_str[1:-1]을 통해 문자열의 맨 첫 글자와 맨 마지막 사이의 글자에서 모두 쉼표(,)를 지워줍니다.

그리고 add_commas() 함수를 호출해 다시 천 단위마다 쉼표(,)를 넣어줍니다.

쉼표(,)가 정상적인 위치에 들어가 있다는 보장이 없기 때문에 우선 지우고 다시 반영을 해줍니다.

 

만약 입력받은 문자열이 [ 금 ]으로만 시작한다면

문자열의 첫 글자를 제외하고 쉼표(,)를 없애줍니다.

그리고 add_commas 함수를 호출해 천 단위마다 쉼표(,)를 넣어줍니다.

 

아래 코드는 다음과 같은 역할을 수행합니다.

    if input_str.endswith("원"):
        number = input_str[:-1]
    else:
        number = input_str
        
    formatted_number = add_commas(number)

위 조건을 충족하지 못하고

제일 마지막 글자가 [ 원 ]이라면,

제일 마지막 글자만 제외하고 add_commas() 함수를 호출해

천단위마다 쉼표(,)를 넣어줍니다.

 

마지막으로 숫자만 입력되었다면 천단위마다 쉼표(,)를 넣어줍니다.

 

마지막으로 전달된 숫자의 앞 뒤에 금과 원을 붙여

최종 결과물을 완성합니다.

return f"금{formatted_number}원"

 

728x90

 예외처리

 

이 코드는 숫자를 선택하거나 

또는 첫 글자가 [ 금 ] 또는 마지막 글자가 [ 원 ]인 경우 등에 한해 작동하므로

그 외 상황에서는 에러가 발생합니다.

def add_commas(number):
    return f"{int(number):,}"

def format_currency(input_str):
    try:
        if input_str.startswith("금"):
            if input_str.endswith("원"):
                number_part = input_str[1:-1].replace(",", "")
                formatted_number = add_commas(number_part)
                return f"금{formatted_number}원"
            else:
                number_part = input_str[1:].replace(",", "")
                formatted_number = add_commas(number_part)
                return f"금{formatted_number}원"

        if input_str.endswith("원"):
            number = input_str[:-1]
        else:
            number = input_str

        formatted_number = add_commas(number)
        return f"금{formatted_number}원"
    except ValueError as e:
        return "숫자가 아닙니다. 범위 선택을 다시해 주세요."

 

이런 식으로 예외처리를 하면 입력값이 잘못되어 있을 때

예를 들어 [ 12가 ]이런 것들이 입력되었을 때 

메시지를 출력해 줍니다.

 

정상작동되는 입력 형식

금12,000원 / 금12000원 / 금12,000 / 금13452000 / 12000원 / 12645000

여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.

파이썬 공부하기

728x90
반응형