파이썬으로 팁 계산기 및 분할 계산기 제작하기
파이썬 실력 향상을 위한 훌륭한 개인 프로젝트로 팁 및 분할 계산기 만들기를 배워봅시다. 본 튜토리얼에서는 명령줄 도구와 그래픽 사용자 인터페이스(GUI) 도구를 사용하여 애플리케이션을 제작하는 두 가지 방법을 제시합니다.
미리보기
애플리케이션은 두 가지 방식으로 구축할 것입니다. 첫 번째로, 사용자의 입력을 받아 출력을 생성하는 기본적인 파이썬 셸 스크립트를 만듭니다.
두 번째로, Tkinter 라이브러리를 활용하여 프로그램에 그래픽 사용자 인터페이스를 제공할 것입니다.
프로그램 명세
본 프로그램은 다음 세 가지 입력을 필요로 합니다:
- 총 청구 금액
- 팁 비율
- 청구서를 분할할 인원수
이 입력값을 바탕으로 프로그램은 다음 출력을 계산합니다:
- 각 개인의 청구서 분담금
- 각 개인의 팁 분담금
- 각 개인의 총 분담금
알고리즘
팁 및 분할 계산기는 다음과 같은 단순한 알고리즘을 따릅니다:
- 입력 받기: bill_amount(청구 금액), tip_percentage(팁 비율), number_of_people(인원수)
- 팁 금액 계산: bill_amount * tip_percentage / 100
- 청구서 각 개인 분담금 계산: bill_amount / number_of_people
- 팁 각 개인 분담금 계산: tip_amount / number_of_people
- 총 개인 분담금 계산: 청구서 분담금 + 팁 분담금
필수 조건
본 튜토리얼을 따르기 위해서는 파이썬 프로그래밍 언어에 대한 기본적인 이해가 필요합니다. 함수, 클래스 등 기본 개념에 대한 지식이 요구됩니다.
또한 시스템에 파이썬이 설치되어 있어야 합니다. 만약 그렇지 않다면, 파이썬 공식 웹사이트에서 다운로드하여 설치하십시오. 또는 koreantech.org에는 별도의 환경 설정 없이 브라우저에서 파이썬 코드를 실행할 수 있는 온라인 파이썬 컴파일러가 제공됩니다.
명령줄 인터페이스를 이용한 계산기 제작
프로젝트 폴더 생성
먼저, 시스템 내 빈 폴더로 이동합니다. 본 튜토리얼에서는 우분투 22.04를 사용하며, 폴더를 생성하고 터미널을 이용하여 이동합니다. 다음 명령어를 입력하십시오:
mkdir tip-calculator && cd tip-calculator
파이썬 파일 생성
다음으로 파이썬 스크립트를 작성할 스크립트 파일을 만듭니다. 여기서는 touch 명령어를 사용합니다.
touch main.py
선호하는 코드 편집기로 스크립트 파일 열기
스크립트 파일에 코드를 작성하기 위해 선호하는 코드 편집기로 파일을 엽니다. 여기서는 터미널 기반 텍스트 편집기인 nano를 사용할 것입니다.
nano main.py
입력 받기
파일이 열렸으면, 다음 코드를 파일 최상단에 추가합니다:
# 청구 금액을 실수 형태로 입력받기 bill_amount = float(input("청구 금액: ")) # 팁 비율을 실수 형태로 입력받기 tip_percentage = float(input("팁 비율: ")) # 인원수를 정수 형태로 입력받기 number_of_people = int(input("인원수: "))
기본적으로 위 코드는 사용자 입력을 받고, 문자열 형태의 입력을 각 변수에 적합한 데이터 타입으로 변환합니다.
팁 금액 계산
이제 팁 비율에 청구 금액을 곱하여 팁 금액을 계산합니다.
tip_amount = bill_amount * tip_percentage / 100
청구서 및 팁 각 개인 분담금 계산
# 각 개인의 청구서 분담금 계산 bill_contribution = bill_amount / number_of_people # 각 개인의 팁 분담금 계산 tip_contribution = tip_amount / number_of_people
총 분담금 계산
다음으로 개인의 청구서 분담금과 팁 분담금을 합산하여 개인당 총 분담금을 계산합니다.
total_contribution = bill_contribution + tip_contribution
결과 출력
마지막으로, 결과를 사용자에게 출력합니다.
# 결과 출력 print("개인별 청구서 분담금: ", bill_contribution) print("개인별 팁 분담금: ", tip_contribution) print("개인별 총 분담금: ", total_contribution)
팁 및 분할 계산기 테스트
완성된 스크립트 파일은 다음과 같습니다.
# 청구 금액을 실수 형태로 입력받기 bill_amount = float(input("청구 금액: ")) # 팁 비율을 실수 형태로 입력받기 tip_percentage = float(input("팁 비율: ")) # 인원수를 정수 형태로 입력받기 number_of_people = int(input("인원수: ")) tip_amount = bill_amount * tip_percentage / 100 # 각 개인의 청구서 분담금 계산 bill_contribution = bill_amount / number_of_people # 각 개인의 팁 분담금 계산 tip_contribution = tip_amount / number_of_people total_contribution = bill_contribution + tip_contribution # 결과 출력 print("개인별 청구서 분담금: ", bill_contribution) print("개인별 팁 분담금: ", tip_contribution) print("개인별 총 분담금: ", total_contribution)
이제 다음 명령어를 사용하여 애플리케이션을 테스트 실행할 수 있습니다.
python3 main.py
GUI를 이용한 팁 및 분할 계산기 구축
이제 그래픽 사용자 인터페이스를 사용하여 동일한 애플리케이션을 구현합니다. GUI 구축에는 Tkinter 라이브러리를 사용할 것입니다.
설정
Tkinter는 파이썬 표준 라이브러리에 내장되어 있어 파이썬 설치 시 기본적으로 설치됩니다.
그러나 일부 리눅스 시스템의 파이썬 설치 시에는 공간 절약을 위해 Tkinter가 미리 설치되어 있지 않을 수 있습니다. 이 경우 다음 명령어를 사용하여 수동으로 설치해야 합니다.
sudo apt-get install python3-tk
프로젝트 파일 생성
시작하려면 파이썬 스크립트를 저장할 파일을 만들고, 선호하는 텍스트 편집기로 엽니다.
touch gui.py
Tkinter 가져오기
다음으로, 파일 최상단에 다음 코드를 추가하여 Tkinter 라이브러리를 가져옵니다.
import tkinter as tk
사용자 인터페이스 만들기
이제 사용자 인터페이스 생성을 시작할 수 있습니다.
# 메인 윈도우 생성 window = tk.Tk() # 윈도우 제목 설정 tk.Label(text="팁 및 분할 계산기").pack() # 청구 금액 입력 필드 tk.Label(text="청구 금액 입력").pack() ent_bill = tk.Entry(width=40) ent_bill.pack() # 팁 비율 입력 필드 tk.Label(text="팁 비율 입력").pack() ent_tip = tk.Entry(width=40) ent_tip.pack() # 인원수 입력 필드 tk.Label(text="인원수 입력").pack() ent_people = tk.Entry(width=40) ent_people.pack() # 계산 실행 버튼 btn_enter = tk.Button(text="계산")
위 코드는 사용자 인터페이스 위젯을 담을 윈도우를 생성하고, 윈도우 제목을 위한 레이블을 추가했습니다.
또한 청구 금액, 팁 비율, 인원수 세 가지 입력을 위한 레이블과 입력 필드를 생성했습니다. 마지막으로, 사용자가 계산을 실행할 수 있도록 버튼을 생성했습니다.
출력 계산 함수 생성
이제 ‘계산’ 버튼 클릭을 처리할 함수를 생성합니다. 이 함수는 입력 필드에서 값을 가져와 앞에서 설명한 알고리즘을 사용해 출력을 계산하고, 결과를 표시하는 레이블을 생성합니다.
def handle_click(event): # 입력 필드에서 값 가져오기 (기본 문자열 데이터 타입에서 변환) bill_amount = float(ent_bill.get()) tip_percentage = float(ent_tip.get()) number_of_people = int(ent_people.get()) # 팁 금액 계산 tip_amount = bill_amount * tip_percentage / 100 # 각 개인의 청구서 분담금 계산 bill_contribution = bill_amount / number_of_people # 각 개인의 팁 분담금 계산 tip_contribution = tip_amount / number_of_people # 각 개인의 총 분담금 계산 total_contribution = bill_contribution + tip_contribution # 출력 문자열 생성 output = f'개인별 청구서: {bill_contribution} n 개인별 팁: {tip_contribution} n 개인별 총액: {total_contribution}' # 출력 레이블 생성 tk.Label(text=output).pack() # UI 변경 사항을 반영하여 윈도우 업데이트 window.update()
위 코드에는 각 주요 단계를 설명하는 주석이 추가되어 있습니다.
버튼에 이벤트 핸들러 연결
다음으로, 버튼 클릭 이벤트에 이벤트 핸들러를 연결합니다. Tkinter에서 버튼 클릭 이벤트는 ‘<Button-1>’ 문자열로 표시됩니다. 이벤트 핸들러를 연결하기 위해 버튼의 bind 메서드를 사용합니다. 함수 정의 아래에 다음 코드를 추가하십시오.
btn_enter.bind('<Button-1>', handle_click) btn_enter.pack()
마지막으로, 윈도우를 실행 상태로 유지하기 위해 윈도우 객체의 mainloop 메서드를 호출합니다.
window.mainloop()
이제 완료되었습니다!
팁 및 분할 계산기 테스트
다음 명령어를 사용하여 애플리케이션을 실행할 수 있습니다.
python3 gui.py
그러면 다음과 같이 윈도우가 열립니다.
샘플 입력을 사용하여 계산기를 실행할 수 있습니다.
마지막 말
본 튜토리얼에서는 팁 및 분할 계산기를 두 가지 방식으로 제작했습니다. 첫 번째 방법은 터미널 기반의 명령줄 도구를 사용했고, 두 번째 방법은 파이썬의 Tkinter를 사용하는 GUI 도구를 이용했습니다. 이 튜토리얼은 간단한 파이썬 프로젝트를 만드는 방법을 보여줍니다. 파이썬 실력을 연마하고 싶다면, 이곳에서 Datacamp 과정을 확인해보세요.
다음으로는 파이썬에서 임의 비밀번호 생성기를 만드는 방법을 알아보실 수 있습니다.