跳至正文
View Categories

1 min read

主要内容 #

  • 辅助计算模块
  • 核心计算模块
  • 1. 辅助计算模块 #

    辅助计算模块,功能是根据两个数字和一个运算符进行有效的运算
    程序如下:
    (以下程序添加到Calculator类中)

        def auxiliary_calculate(self, first_num, second_num, operator):
            '''
            辅助计算模块:根据两个数字和一个运算符进行有效的运算
            '''
            if operator == '/': # 除法的判断
                if second_num == 0:
                    _str = 'Error'
                    self.res = 0
                    self.line_edit.setText(_str) # 有错误的情况下,直接将str返回到文本框
                    return None
                else:
                    return first_num / second_num
            elif operator == '*':
                return first_num * second_num
            elif operator == '+':
                return first_num + second_num
            else:
                return first_num - second_num

    2. 核心计算模块 #

    以下程序为计算器的核心计算模块。
    (以下程序添加到Calculator类中)

        def calculate(self, operator='='):
            '''
            核心计算模块,
            '''
    		print(self.num_stack)
    		print(self.char_stack)
    		error_flag = False
    		while len(self.char_stack) >= 1: # 判断运算符的个数
    			if operator == '=': # 等于号的处理
    				n1 = self.num_stack.pop() # 获取第一个数字
    				n2 = self.num_stack.pop() # 获取第二个数字
    				op = self.char_stack.pop() # 获取第一个运算符
    				result = self.auxiliary_calculate(n2, n1, op)
    			elif operator == '%': # 百分号的处理
    				n1 = self.num_stack.pop()
    				result = n1 * 0.01
    			else: # 正负号的处理
    				n1 = self.num_stack.pop()
    				result = -1 * n1
    			if result is None: # 如果结果为空,则全部置为空
    				self.num_stack.clear()
    				self.char_stack.clear()
    				error_flag = True
    				break
    			else:
    				self.num_stack.append(result) # 将结果放到num_stack,用于下一次的计算或者输出
    		if not error_flag: # 如果不是错误的计算
    			self.res = self.num_stack.pop() # 获取最终的结果
    			if self.res == int(self.res): # 判断是否为整型
    				self.res = int(self.res)
    			self.line_edit.setText(str(self.res)) # 将结果输出到文本框
    		else:
    			self.line_edit.setText('Error') # 如果计算结果是错误的,将error输出到文本框

    3. 小结 #

    • 本章完成了计算器的辅助计算模块以及核心计算模块。

    习题 #