금액을 표시할 때
맨 앞에 [ 금 ]을 붙이고 숫자를 표시한 다음 맨 뒤에 [ 원 ]을 붙입니다.
그리고 숫자에 천 단위마다 쉼표를 넣습니다.
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}원"
예외처리
이 코드는 숫자를 선택하거나
또는 첫 글자가 [ 금 ] 또는 마지막 글자가 [ 원 ]인 경우 등에 한해 작동하므로
그 외 상황에서는 에러가 발생합니다.
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
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
'파이썬(Python)' 카테고리의 다른 글
[ 이미지 변환기 ] 그림 파일 용량, 이미지 사진 용량 줄이기 : 자작 프로그램 (2) | 2024.10.16 |
---|---|
[ 파이썬 한글 자동화 ] 지정한 범위의 텍스트 출력하기, 선택 범위 텍스트 출력 (1) | 2024.10.14 |
[ 파이썬 한글 자동화 ] 숫자로 입력한 금액을 한글 금액으로 바꾸기 (0) | 2024.10.13 |
[ 파이썬 한글 자동화 ] 한글 문서의 위치 : GetPos(), SetPos() (0) | 2024.10.11 |
[ 파이썬 한글 자동화 ] 한글 문서(Hwp) 안의 표 개수 확인하기 (0) | 2024.10.11 |