11 파이썬 - 컴퓨터앱
기능 함수 구현 - 계산하기
calculate 함수를 구현해봅시다.
우선 알아볼 것은 try ~ except입니다.
Python
1
2
3
4
try :
#오류가 날 수도 있는 코드
except :
#오류가 났을 때 실행할 코드try ~ except는 if ~ else와 비슷합니다. 간단하게 말하자면
"try에 있는 걸 실행해봐, 오류가 안 나면 끝 혹시 오류가 나면 except를 실행해!"
라고 컴퓨터에게 말해주는 것과 같습니다.
우리는 앞으로 더하기 빼기 나누기 등등을 처리하는 함수를 정의할 것인데 혹시라도 우리가 예상하지 못하는 입력을 받게 된다면 (예: 더하기 버튼 연속으로 두 번 누르면) 프로그램이 멈추어 버릴 수도 있기 때문에 오류가 날 때를 대비해주는 것이 좋습니다.
Python
# 계산 메소드
def calculate(self, who) :
try :
except :
self.new = '오류!'
self.old = ''
self.operator = ''
self.updateUi(self.new)앞 강의에서 "오류!"가 담겨있을 때 초기화해주던 코드가 기억나나요?
Python
# = 버튼 처리
if who == '=' :
# 이전 값과 연산자가 있을 때만 계산
if self.old != '' and self.operator != '' :
self.new = str(eval(self.old + self.operator + self.new))
self.old = ''
self.operator = who[ = ] 버튼을 눌렀을 때는 연산한 결과만 처리해주면 되죠? 만약 사용자가 숫자를 안 누르고 바로 [ = ] 버튼을 누를 수도 있으니 이전 값(old)과 연산자(operator)가 있을 때만 계산을 합니다
Python
.....
# 연산자 처리
else :
# 이전 값이 있을 경우 이전 값과 현재 값을 계산 후 연산자 대입.
if self.old != '' :
self.new = str(eval(self.old + self.operator + self.new))
self.old = ''
self.operator = who
.....[ = ] 버튼 이외에 연산자 버튼을 누른 경우 해당 연산자로 계산을 합니다.
자 완성된 코드입니다!
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 계산 메소드
def calculate(self, who) :
try :
# = 버튼 처리
if who == '=' :
# 이전 값과 연산자가 있을 때만 계산
if self.old != '' and self.operator != '' :
self.new = str(eval(self.old + self.operator + self.new))
self.old = ''
self.operator = who
# 연산자 처리
else :
# 이전 값이 있을 경우 이전 값과 현재 값을 계산 후 연산자 대입.
if self.old != '' :
self.new = str(eval(self.old + self.operator + self.new))
self.old = ''
self.operator = who
except :
self.new = '오류!'
self.old = ''
self.operator = ''
self.updateUi(self.new)