본문 바로가기
프로그램/Python 1000제

Python 280제] 파이썬 EXPRESS CHAPTER 9. 도전문제 p433

by 건티 2024. 5. 22.
728x90

출처 : 반크_독도2023

 

참고풀이]

import math
from tkinter import *

window = Tk()
window.title("My Calculator")
display = Entry(window, width=23, bg="yellow", font=("Helvetica","20"))
display.grid(row=0, column=0, columnspan=5, pady=3)

button_list = [
    '7', '8', '9', '/', 'C',
    '4', '5', '6', '*', 'log',
    '1', '2', '3', '-', 'sin',
    '0', '.', '=', '+', ' ']

def click(key):
    if key == "=":
        result = eval(display.get())
        s = str(result)
        display.insert(END, "=" + s)
    elif key == "C":
        display.delete(0, END)
    elif key == "log":
        log_click()
    elif key == "sin":
        sin_click()
    else:
        display.insert(END, key)

def log_click():
    code_log = display.get()
    num = eval(code_log)
    result = math.log10(num)
    display.delete(0, END)
    display.insert(END, "log(" + code_log + ") = " + str(result))

def sin_click():
    code_sin = display.get()
    num = eval(code_sin)
    result = math.sin(math.radians(num))
    display.delete(0, END)
    display.insert(END, "sin(" + code_sin + ") = " + str(result))

row_index = 1
col_index = 0

for button_text in button_list:
    Button(window, text=button_text, width=5, bg="black", fg="white", font=("Helvetica","16"),
           command=lambda t=button_text: click(t)).grid(row=row_index, column=col_index)

    col_index += 1
    if col_index > 4:
        row_index += 1
        col_index = 0

window.mainloop()

 

참고풀이 결과]

시작창)

사칙연산했을 때)

log했을 때)

sin했을 때)

 

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 여름

 

반응형

댓글