
简单计算器实现
狂放不羁霸
学习令人大脑颤抖 ^_^
展开
-
【Python】简单计算器实现(一)
对于第一段式子,如果它是以 “-” 开头的数字,那么必定为负数,因此不做处理,直接放入 final_formula 中,然后进入下一个循环。对于不满足前面两种情况的式子,它就是一个不具有 “包含负数” 可能性的普通式子,只要把里面的数字和运算符全部分割开即可。首先使用正则表达式,把输入的式子中的数字和运算符全部分割开来,此过程中需要判断 “-” 是负号还是减号。判断分割出来的形为 “-数字” 的内容到底是不是负数,以及将除负数以外的数字与其相连的运算符分割开来。它就是 “X-数字” 中的 “X”。原创 2023-07-16 00:01:30 · 434 阅读 · 0 评论 -
【Python】简单计算器实现(二)
对于栈顶不是括号 “(”,若当前运算符(除了 “)”)优先级更高,则到时候进行压栈;若当前运算符优先级等于或小于上一个运算符优先级,则到时候进行弹栈并运算。对于栈顶是括号 “(”,若 “(” 遇上的是 “)”,则需要弹出 “(”,且丢掉 “)”;若 “(” 遇上的是其它运算符,则都进行压栈。“(” 能遇上 “)” 就说明中间的运算符都已经被处理完毕了,又因为括号没有实际运算含义,所以直接丢弃即可。将当前运算符与运算符栈中的最后一个运算符,即上一个运算符,进行比较。定义四种运算符优先级。原创 2023-07-16 09:37:35 · 268 阅读 · 0 评论 -
【Python】简单计算器实现(三)
当运算符栈不为空时,则需要比较上一个运算符和当前运算符。注意:由于当前运算符还可能小于或等于上上个运算符,因此弹栈并运算后并没有进入下一次大循环,而是继续待在小循环中,直至不满足条件。若是运算符,则调用上一篇文章中的 decision 函数,判断是应该将运算符压栈、弹栈,还是弹栈并运算。循环判断列表 formula_list 中的每一个元素。formula_list:包含分割开来的数字和运算符。下一步,我们正式进入计算部分。若是数字,则直接压入数字栈中。处理剩余的数字和运算符。原创 2023-07-16 09:59:23 · 184 阅读 · 0 评论 -
【Python】简单计算器实现(四)
如:'-1-2*((-2+3)+(-2/2))' 应该处理成:['-1', '-', '2', '*', '(', '(', '-2', '+', '3', ')', '+', '(', '-2', '/', '2', ')', ')']。这里定义了两个变量 result 和 _ 来接收 final_calc 返回的两个列表,即数字栈和运算符栈。弹栈时计算 “两个数字和运算符组成的算式” 的结果的函数。最后,我们来看看最简单的运算函数和判断运算符函数。决策函数,决定应该是入栈,弹栈运算,还是弹栈丢弃。原创 2023-07-16 10:17:30 · 292 阅读 · 0 评论