主要内容 #
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. 小结 #
- 本章完成了计算器的辅助计算模块以及核心计算模块。
习题 #
- 无