▣ 계산기
파이썬 초보도 간단하게 만들 수 있는 프로그램 아이디어
파이썬 프로그램파이썬을 처음 시작하시는 분들이 간단하게 만들어 사용해 볼 만한 프로그램 몇 가지를 만들어보았습니다. 이 프로젝트들은 초보자도 쉽게 시작할 수 있으며, 파이썬의 기본 개
mubi.tistory.com
이 프로그램은 사용자로부터 두 개의 숫자와 하나의 연산자를 입력받아 사칙연산(+,-,*,/)을 수행하고 그 결과를 출력합니다.
- 입력: input() 함수를 사용해 첫 번째 숫자, 연산자, 두 번째 숫자를 차례대로 입력받습니다.
- 연산: if와 elif 조건문을 사용하여 입력된 연산자에 따라 덧셈, 뺄셈, 곱셈, 나눗셈을 실행합니다.
- 예외 처리:
- 만약 나눗셈('/') 연산 시 두 번째 숫자가 0이면, "0으로 나눌 수 없습니다."라는 메시지를 출력합니다.
- 입력된 연산자가 사칙연산 기호가 아니면, "유효한 연산자를 입력하세요."라는 메시지를 출력합니다.
- 결과 출력: print() 함수를 사용해 최종 연산 결과를 화면에 보여줍니다.
▷ 계산기 프로그램 코드
def calculator():
num1 = float(input("첫 번째 숫자를 입력하세요: "))
operator = input("연산자를 입력하세요 (+, -, *, /): ")
num2 = float(input("두 번째 숫자를 입력하세요: "))
if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
elif operator == '*':
result = num1 * num2
elif operator == '/':
if num2 != 0:
result = num1 / num2
else:
result = "0으로 나눌 수 없습니다."
else:
result = "유효한 연산자를 입력하세요."
print(f"결과: {result}")
calculator()
위 파이썬 코드는 함수로 정의 되어 있습니다. 함수는 특정 작업을 수행하는 코드 블록입니다. 쉽게 말해, 자주 사용되는 코드를 하나의 묶음으로 만들어 필요할 때마다 재사용할 수 있게 해주는 도구입니다. 복잡한 코드를 여러 개의 작은 함수로 나누면 코드를 더 읽기 쉽게 만들고 관리하기 편해집니다. 한 파일에 정의된 함수를 다른 파일에서 모듈(module) 형태로 불러와 사용할 수 있습니다.
파이썬에서 함수는 def 키워드로 시작하여 함수의 이름과 매개변수를 지정합니다. 함수 내부에 포함되는 코드는 들여쓰기(indentation)를 통해 구분됩니다. 이 들여쓰기가 끝나는 지점이 바로 함수의 끝이 됩니다.
def my_function(parameter1, parameter2):
# 이 부분이 함수의 시작입니다.
# 들여쓰기 된 모든 코드가 함수에 속합니다.
print(parameter1 + parameter2)
# 이 부분이 함수의 끝입니다. 들여쓰기가 끝납니다.

코드의 맨지막 "calculator()"는 정의된 함수를 실행하기 위해서입니다. 파이썬에서 def를 사용하여 함수를 정의하는 것은 설계도를 만드는 것과 같습니다. 설계도만 가지고는 건물을 지을 수 없듯이, 함수를 정의만 해놓고 호출하지 않으면 함수 안의 코드는 전혀 실행되지 않습니다. 코드의 마지막 줄에 있는 calculator()는 설계도에 따라 실제로 건물을 짓는 행위, 즉 정의된 함수를 호출하여 그 안에 있는 모든 코드가 순서대로 실행되도록 만드는 역할을 합니다. 따라서 이 코드가 정상적으로 작동하려면 반드시 마지막 줄에 calculator()와 같은 함수 호출이 필요합니다. 이 한 줄이 있어야만 "첫 번째 숫자를 입력하세요:"라는 메시지가 화면에 나타나고 사용자와의 상호작용이 시작됩니다.
▷ 코드 설명
1. 함수 정의 : def calculator():
calculator라는 이름의 함수를 정의합니다. 이 함수 내부에 계산기 프로그램의 모든 기능이 포함되어 있습니다.
2. 사용자 입력
num1 = float(input("첫 번째 숫자를 입력하세요: "))
operator = input("연산자를 입력하세요 (+, -, *, /): ")
num2 = float(input("두 번째 숫자를 입력하세요: "))
input() 함수를 사용하여 사용자로부터 세 가지 값을 입력받습니다.
- 첫 번째 숫자와 두 번째 숫자는 float()을 통해 소수점을 포함하는 숫자로 변환됩니다.
- 연산자는 그대로 문자열로 저장됩니다.
- "nun1", "operator", "num2"는 변수 입니다.
3. 조건에 따른 연산
if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
...
- if, elif, else 조건문을 사용하여 입력된 operator 값에 따라 다른 연산을 수행합니다.
- 덧셈(+), 뺄셈(-), 곱셈(*)을 각각 처리합니다.
4. 나눗셈과 예외 처리
elif operator == '/':
if num2 != 0:
result = num1 / num2
else:
result = "0으로 나눌 수 없습니다."
나눗셈('/')의 경우, 특별한 예외 처리가 포함되어 있습니다.
- 만약 두 번째 숫자(num2)가 0이 아니라면 나눗셈을 실행하지만, 만약 0이라면 "0으로 나눌 수 없습니다."라는 메시지를 result에 할당합니다.
- 이는 0으로 나누는 수학적 오류를 방지하기 위함입니다.
6. 유효하지 않은 연산자 처리
else:
result = "유효한 연산자를 입력하세요."
- if와 elif의 모든 조건에 해당하지 않을 경우(즉, +, -, *, / 이외의 문자가 입력된 경우), "유효한 연산자를 입력하세요."라는 메시지를 result에 할당합니다.
7. 결과 출력
print(f"결과: {result}")
- 모든 연산이 끝난 후, f-string을 사용하여 최종 결과(result)를 화면에 출력합니다.
사용된 변수 이름 및 용도
calculator() 함수에 포함된 변수 이름들은 다음과 같습니다.
이 변수들은 모두 함수 내에서만 유효한 지역 변수(local variables)입니다.
1) num1: 첫 번째 숫자를 저장하는 변수입니다.
2) operator: 사용자가 입력한 연산자(+, -, *, /)를 저장하는 변수입니다.
3) num2: 두 번째 숫자를 저장하는 변수입니다.
4) result: 연산 결과를 저장하는 변수입니다.
▣ 계산기 프로그램

▣ 계산기 프로그램 소스
import customtkinter
# 계산기 클래스 정의
class CalculatorApp(customtkinter.CTk):
def __init__(self):
super().__init__()
# 창 설정
self.title("GUI 계산기 (소수점)")
self.geometry("300x400")
self.resizable(False, False) # 창 크기 변경 불가
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
# 결과 화면(Entry) 위젯
self.result_display = customtkinter.CTkEntry(self, width=280, height=50, font=("Helvetica", 24), justify='right')
self.result_display.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
self.result_display.insert(0, "0")
# 버튼 생성
buttons = [
'C', 'Del', '(', ')',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'.', '0', '=', '+'
]
# 버튼을 그리드에 배치
row = 1
col = 0
for button_text in buttons:
if button_text == '=':
button = customtkinter.CTkButton(self, text=button_text, width=60, height=60, font=("Helvetica", 20),
command=lambda t=button_text: self.on_button_click(t), fg_color="green")
elif button_text in ['C', 'Del']:
button = customtkinter.CTkButton(self, text=button_text, width=60, height=60, font=("Helvetica", 20),
command=lambda t=button_text: self.on_button_click(t), fg_color="gray")
elif button_text in ['/', '*', '-', '+']:
button = customtkinter.CTkButton(self, text=button_text, width=60, height=60, font=("Helvetica", 20),
command=lambda t=button_text: self.on_button_click(t), fg_color="orange")
else:
button = customtkinter.CTkButton(self, text=button_text, width=60, height=60, font=("Helvetica", 20),
command=lambda t=button_text: self.on_button_click(t))
button.grid(row=row, column=col, padx=5, pady=5)
col += 1
if col > 3:
col = 0
row += 1
# 계산 상태 변수
self.expression = ""
# 버튼 클릭 이벤트 처리
def on_button_click(self, char):
current_text = self.result_display.get()
if char == 'C':
self.expression = ""
self.result_display.delete(0, 'end')
self.result_display.insert(0, "0")
elif char == 'Del':
# 결과 화면의 마지막 문자 하나를 삭제
if len(current_text) > 1:
new_text = current_text[:-1]
self.result_display.delete(0, 'end')
self.result_display.insert(0, new_text)
self.expression = self.expression[:-1]
else:
self.result_display.delete(0, 'end')
self.result_display.insert(0, "0")
self.expression = ""
elif char == '=':
try:
if "/0" in self.expression:
self.result_display.delete(0, 'end')
self.result_display.insert(0, "오류: 0으로 나눌 수 없습니다.")
self.expression = ""
return
result = eval(self.expression)
self.result_display.delete(0, 'end')
self.result_display.insert(0, str(result))
self.expression = str(result)
except (SyntaxError, ZeroDivisionError):
self.result_display.delete(0, 'end')
self.result_display.insert(0, "오류")
self.expression = ""
except Exception:
self.result_display.delete(0, 'end')
self.result_display.insert(0, "오류")
self.expression = ""
else:
if current_text == "0" and char in '123456789':
self.result_display.delete(0, 'end')
self.expression = ""
if char == '.':
if '.' in self.result_display.get():
return
self.result_display.insert('end', char)
self.expression += char
# 애플리케이션 실행
if __name__ == "__main__":
app = CalculatorApp()
app.mainloop()
by korealionkk@gmail.com

'업무 자동화 > python & CAD' 카테고리의 다른 글
| Python 학습] 로그인 프로그램 - 사용자 계정 (1) | 2025.08.17 |
|---|---|
| Python 학습] 선택한 폴더안에 있는 asm 파일 이름 가져오기 (1) | 2025.08.16 |
| Python 학습] 파이썬 코드를 실행파일 exe로 만드는 방법 (2) | 2025.08.15 |
| Python 학습] 파이썬 GUI 배우기 - 커스텀 티킨터(CustomTkinter) (3) | 2025.08.15 |
| Python 학습] 파워 포인트 자동화 해보기 #1 (2) | 2025.08.14 |