반응형





지금 인턴하고 있는 회사 첫 출근에 과장님께 과제로 받은 것이
자신있는 언어로 사칙연산이 가능한 계산기를 만들고 키보드와 연동하라는 것이었습니다. 
그나마 익숙한 자바로 사칙연산하는 계산기를 만들며 생각난 것이
파이썬으로 하면 정말 간단한 솔루션이 나올것 같은 예감이 들었습니다.
역시나 구글링을 하니 제 예감이 적중했더군요.
50줄도 안되는 계산기입니다...

파이썬에는 eval()이라는 내장 함수가 있습니다.
이 eval() 함수는 인자로 받은 텍스트 데이터를 파이썬 인터프리터가 번역할 수 있는 파이썬 코드로 변환합니다.
GUI는 tkinter 모듈을 이용하면 간단히 만들 수 있군요.

예를 들어 result =eval("1+2*3/4") 이라고 하면 인자에 들어간  텍스트를 파이썬 코드로 변환하여
result에는 1+2*3/4 의 연산 결과인 2.25가 들어가게 되는 것이죠.

정말 획기적이지 않나요??
텍스트 창 안의 내용을 그대로 계산하는 초간단 계산기 였습니다.!!
키보드와 바로 연동되는 것은 아니지만
텍스트 창 안에 수식을 입력하면 바로 계산되어 나왔습니다.

역시 파이썬이 강력한 이유는 유용한 내장함수와 다양한 모듈들 이겠지요!!

코드 출처 : http://lexlove.egloos.com/10763317
#calculator.py
#-*-coding=utf-8-*-
#GUI를 만들어주는 tkinter 모듈을 임포트!
from tkinter import *

#이벤트 처리함수
def enter(btn):
    if btn == 'C':
        ent.delete(0, END)
    elif btn == '=':
        #eval()함수는 텍스트로된 데이터를 바로 파이썬 코드로 변환합니다.대박..
        #그래서 ent라는 곳에 입력된 수식을 바로 계산해 냅니다.
        ans = eval(ent.get())
        ent.delete(0, END)
        ent.insert(0, ans)
    else:
        #C와 =을 제외한 버튼은 그대로 ent에 추가.
        ent.insert(END, btn)

def quit():
    root.destroy()
    root.quit()
#창만들기
root=Tk()
root.title('계산기')

#숫자 입력란 만들기
ent=Entry(root)
ent.insert(0, ' ')
ent.pack(pady=5)

#숫자 버튼 만들기
buttons = ['7410', '852=', '963+', 'C/*-']
for col in buttons:
    frm=Frame(root)
    frm.pack(side=LEFT)
    for row in col :
        btn=Button(frm, text=row, command=(lambda char=row: enter(char)))
        btn.pack(fill=X, padx=5, pady=5)

#프로그램 실행
root.mainloop()
반응형

+ Recent posts