기능 함수 구현 - 계산하기
배우기
11 파이썬 - 컴퓨터앱
기능 함수 구현 - 계산하기

calculate 함수를 구현해봅시다.

우선 알아볼 것은 try ~ except입니다.

Python
1
2
3
4
try :
    #오류가 날 수도 있는 코드
except : 
    #오류가 났을 때 실행할 코드

try ~ exceptif ~ 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)
질문하기
추가 자료
no files uploaded

추가 자료가 없습니다

여기서 새로운 학습 자료를 확인하세요!
선생님이 추가한 자료들을 바로 확인할 수 있어요.