ch0nny_log

[빅데이터분석] Python_21. 예외처리 이해하기 ① (try~except) 본문

빅데이터 분석(with 아이티윌)/python

[빅데이터분석] Python_21. 예외처리 이해하기 ① (try~except)

chonny 2024. 8. 8. 11:19

 

 

def my_devide():
    try:
        x=input('분자의 숫자를 입력')
        y=input('분모의 숫자를 입력')
        return int(x)/int(y)
    except:
        return '잘못된 값을 입력하셔서 나누기를 할 수 없습니다.'
print(my_devide())

def fact():
    import math
    try:
        x = int(input('숫자를 입력하세요: '))
        result = math.factorial(x)
        return result
    except ValueError:
        return '잘못된 입력입니다.'

print(fact())

설명: except ValueError 를 입력하여 값오류가 떴을 때 출력하게끔 함

 


 

■  예외처리 활용 인터페이스 생성

 

1단계: 모듈 임포트 및 팩토리얼 계산 함수 정의

import tkinter as tk
from tkinter import messagebox
import math

# 팩토리얼 계산 함수
def calc_fact():
    try:
        n = int(entry.get()) # 화면의 박스에 입력받은 값을 n 할당
        res = math.factorial(n) # n숫자값의 factorial 계산
        result_lbl.config(text=f"팩토리얼: {res}") #팩토리얼 계산값 화면에 출력
    except ValueError:
        messagebox.showerror("오류", "정수를 입력하세요.") # 오류 메시지 박스 출력

설명:

  • 모듈 임포트: tkinter를 tk로 임포트하고, messagebox와 math 모듈을 임포트합니다.
  • 팩토리얼 계산 함수 (calc_fact):
    • 입력된 값을 정수로 변환하고 팩토리얼을 계산하여 결과를 표시합니다.
    • 정수가 아닌 값을 입력한 경우 오류 메시지를 표시합니다.

 

2단계: Tkinter 창 생성

import tkinter as tk
from tkinter import messagebox
import math

# 팩토리얼 계산 함수
def calc_fact():
    try:
        n = int(entry.get())
        res = math.factorial(n)
        result_lbl.config(text=f"팩토리얼: {res}")
    except ValueError:
        messagebox.showerror("오류", "정수를 입력하세요.")

# Tkinter 창 생성
root = tk.Tk() #tk() 클래스를 이용해서 root라는 객체 생성
root.title("팩토리얼 계산기")  # 창 제목 설정
root.geometry("500x400")  # 창 크기 설정

설명:

  • Tkinter 창 생성:
    • root라는 이름의 Tkinter 메인 윈도우를 생성합니다.
    • root.title("팩토리얼 계산기")를 사용하여 창의 제목을 "팩토리얼 계산기"로 설정합니다.
    • root.geometry("500x400")를 사용하여 창의 크기를 500x400 픽셀로 설정합니다.

 

3단계: 프레임 생성 및 중앙 정렬 (생략)

import tkinter as tk
from tkinter import messagebox
import math

# 팩토리얼 계산 함수
def calc_fact():
    try:
        n = int(entry.get())
        res = math.factorial(n)
        result_lbl.config(text=f"팩토리얼: {res}")
    except ValueError:
        messagebox.showerror("오류", "정수를 입력하세요.")

# Tkinter 창 생성
root = tk.Tk()
root.title("팩토리얼 계산기")  # 창 제목 설정
root.geometry("500x400")  # 창 크기 설정

# 프레임 생성 (중앙 정렬을 위해)
frame = tk.Frame(root)
frame.pack(expand=True)

설명:

  • 프레임 생성:
    • frame을 생성하여 중앙 정렬을 위해 사용합니다.
    • frame.pack(expand=True)를 사용하여 프레임을 창에 추가하고, 여유 공간을 채우도록 합니다.

 

4단계: 숫자 입력 레이블 추가

import tkinter as tk
from tkinter import messagebox
import math

# 팩토리얼 계산 함수
def calc_fact():
    try:
        n = int(entry.get())
        res = math.factorial(n)
        result_lbl.config(text=f"팩토리얼: {res}")
    except ValueError:
        messagebox.showerror("오류", "정수를 입력하세요.")

# Tkinter 창 생성
root = tk.Tk()
root.title("팩토리얼 계산기")  # 창 제목 설정
root.geometry("500x400")  # 창 크기 설정

# 프레임 생성 (중앙 정렬을 위해)
frame = tk.Frame(root)
frame.pack(expand=True)

# 숫자 입력 레이블 추가
entry_lbl = tk.Label(frame, text="숫자 입력:", font=("Arial", 14))
entry_lbl.pack(pady=10)

 

설명:

  • 숫자 입력 레이블:
    • "숫자 입력:"이라는 텍스트를 가진 레이블을 생성합니다.
    • 폰트를 Arial 14로 설정하고, entry_lbl.pack(pady=10)를 사용하여 레이블을 프레임에 추가하며, 위아래 여백을 10픽셀로 설정합니다.

 

5단계: 숫자 입력 필드 추가

import tkinter as tk
from tkinter import messagebox
import math

# 팩토리얼 계산 함수
def calc_fact():
    try:
        n = int(entry.get())
        res = math.factorial(n)
        result_lbl.config(text=f"팩토리얼: {res}")
    except ValueError:
        messagebox.showerror("오류", "정수를 입력하세요.")

# Tkinter 창 생성
root = tk.Tk()
root.title("팩토리얼 계산기")  # 창 제목 설정
root.geometry("500x400")  # 창 크기 설정

# 프레임 생성 (중앙 정렬을 위해)
frame = tk.Frame(root)
frame.pack(expand=True)

# 숫자 입력 레이블 추가
entry_lbl = tk.Label(frame, text="숫자 입력:", font=("Arial", 14))
entry_lbl.pack(pady=10)

# 숫자 입력 필드 추가
entry = tk.Entry(frame, font=("Arial", 14), width=10)
entry.pack(pady=10)

설명:

  • 숫자 입력 필드:
    • 사용자가 숫자를 입력할 수 있는 입력 필드를 생성합니다.
    • 폰트를 Arial 14로 설정하고, 너비를 10자로 설정합니다.
    • entry.pack(pady=10)를 사용하여 입력 필드를 프레임에 추가하며, 위아래 여백을 10픽셀로 설정합니다.

 

6단계: 계산 버튼 추가

import tkinter as tk
from tkinter import messagebox
import math

# 팩토리얼 계산 함수
def calc_fact():
    try:
        n = int(entry.get())
        res = math.factorial(n)
        result_lbl.config(text=f"팩토리얼: {res}")
    except ValueError:
        messagebox.showerror("오류", "정수를 입력하세요.")

# Tkinter 창 생성
root = tk.Tk()
root.title("팩토리얼 계산기")  # 창 제목 설정
root.geometry("500x400")  # 창 크기 설정

# 프레임 생성 (중앙 정렬을 위해)
frame = tk.Frame(root)
frame.pack(expand=True)

# 숫자 입력 레이블 추가
entry_lbl = tk.Label(frame, text="숫자 입력:", font=("Arial", 14))
entry_lbl.pack(pady=10)

# 숫자 입력 필드 추가
entry = tk.Entry(frame, font=("Arial", 14), width=10)
entry.pack(pady=10)

# 계산 버튼 추가
calc_btn = tk.Button(frame, text="계산", command=calc_fact, font=("Arial", 14))
calc_btn.pack(pady=10)

 

설명:

  • 계산 버튼:
    • "계산"이라는 텍스트를 가진 버튼을 생성합니다.
    • 버튼이 클릭되면 calc_fact 함수가 호출됩니다.
    • 폰트를 Arial 14로 설정하고, calc_btn.pack(pady=10)를 사용하여 버튼을 프레임에 추가하며, 위아래 여백을 10픽셀로 설정합니다.

 

7단계: 결과 레이블 추가 및 Tkinter 이벤트 루프 시작

import tkinter as tk
from tkinter import messagebox
import math

# 팩토리얼 계산 함수
def calc_fact():
    try:
        n = int(entry.get())
        res = math.factorial(n)
        result_lbl.config(text=f"팩토리얼: {res}")
    except ValueError:
        messagebox.showerror("오류", "정수를 입력하세요.")

# Tkinter 창 생성
root = tk.Tk()
root.title("팩토리얼 계산기")  # 창 제목 설정
root.geometry("500x400")  # 창 크기 설정

# 프레임 생성 (중앙 정렬을 위해)
frame = tk.Frame(root)
frame.pack(expand=True)

# 숫자 입력 레이블 추가
entry_lbl = tk.Label(frame, text="숫자 입력:", font=("Arial", 14))
entry_lbl.pack(pady=10)

# 숫자 입력 필드 추가
entry = tk.Entry(frame, font=("Arial", 14), width=10)
entry.pack(pady=10)

# 계산 버튼 추가
calc_btn = tk.Button(frame, text="계산", command=calc_fact, font=("Arial", 14))
calc_btn.pack(pady=10)

# 결과 레이블 추가
result_lbl = tk.Label(frame, text="팩토리얼:", font=("Arial", 16))
result_lbl.pack(pady=10)

# Tkinter 이벤트 루프 시작 (창을 표시하고 사용자 입력을 대기)
root.mainloop()

설명:

  • 결과 레이블:
    • "팩토리얼:"이라는 텍스트를 가진 레이블을 생성합니다.
    • 폰트를 Arial 16으로 설정하고, result_lbl.pack(pady=10)를 사용하여 레이블을 프레임에 추가하며, 위아래 여백을 10픽셀로 설정합니다.

Tkinter 이벤트 루프 시작:

  • root.mainloop()를 호출하여 이벤트 루프를 시작합니다. 이 함수는 창이 닫힐 때까지 프로그램이 실행되도록 합니다.

 

+) 프레임 색깔 변경

frame = tk.Frame(root. bg ='lightblue')

 

import tkinter as tk
from tkinter import messagebox
import math

# 팩토리얼 계산 함수
def calc_fact():
    try:
        n = int(entry.get())
        res = math.factorial(n)
        result_lbl.config(text=f"팩토리얼: {res}")
    except ValueError:
        messagebox.showerror("오류", "정수를 입력하세요.")

# Tkinter 창 생성
root = tk.Tk()
root.title("팩토리얼 계산기")  # 창 제목 설정
root.geometry("500x400")  # 창 크기 설정

# 프레임 생성 (중앙 정렬을 위해)
frame = tk.Frame(root, bg="lightblue")
frame.pack(expand=True, fill="both")

# 숫자 입력 레이블 추가
entry_lbl = tk.Label(frame, text="팩토리얼 결과를 볼 숫자 입력:", font=("Arial", 24),bg="lightblue")
entry_lbl.pack(pady=10)

# 숫자 입력 필드 추가
entry = tk.Entry(frame, font=("Arial", 24), width=20)
entry.pack(pady=10)

# 계산 버튼 추가
calc_btn = tk.Button(frame, text="계산", command=calc_fact, font=("Arial", 14))
calc_btn.pack(pady=10)

# 결과 레이블 추가
result_lbl = tk.Label(frame, text="팩토리얼:", font=("Arial", 16), bg="lightblue")
result_lbl.pack(pady=10)

# Tkinter 이벤트 루프 시작 (창을 표시하고 사용자 입력을 대기)
root.mainloop()