简单计算器的python实现

这篇博客介绍了如何使用Python实现一个简单的计算器,主要涉及中缀表达式转后缀表达式的方法,并给出了具体的Python代码实现。在计算过程中,注意了操作符的优先级以及小数的取舍问题,对于小数取舍,作者提到了round()函数的四舍六入五留双原则及其可能产生的误差,并暗示可能需要自定义保留位数的函数来确保精确性。
摘要由CSDN通过智能技术生成

题目描述:
读入一个只包含’+‘、’-‘、’*‘、’/‘的非负整数计算表达式,计算该表达式的值

解题思路:

  1. 将给定的中缀表达式转换为后缀表达式 计算后缀表达式
  2. 通过第一步得到的后缀表达式计算结果

步骤1:中缀表达式转后缀表示:

  1. 设立一个操作符栈,用于临时存放操作符。设立另一个list,存放后缀表达式
  2. 从左至右扫描表达式,如果碰到数,就把操作数加入到后缀表达式中(注意:数字可能不止一位,例如’234’,需要读入下一位然后进行合并)
  3. 若碰到操作符,就与当前操作符栈栈顶的操作符的优先级进行比较。1>若当前的操作符优先级高于栈顶操作符的优先级,则将当前的操作符压栈。2>若当前操作符的优先级小于或等于栈顶操作符的优先级,则将操作符栈中的栈顶操作符出栈,直到遇到优先级高于当前操作符的。
  4. 重复上述操作,直至扫描完表达式。

步骤2:

  1. 从左至右遍历后缀表达式,如果是操作数,就跳过,如果是操作符,则取出操作符之前的两个数字。注意两个数字的顺序,在减法跟除法中是有顺序的区别的。
  2. 当前计算的结果替换取出两个数字中的一个,弹出另一个和当前的操作符。
  3. 直至后缀表达式中只剩下一个元素的时候停止。

python代码如下

class Solution:
    def Change(self, string):
        priority = {
   '+': 1, '-': 1, '*': 2, '/': 2}  # 优先级,‘-’、‘+’为一类 ‘/’、‘*’为一类
        suffix = []
        operateList = []
        curPtr = 0
        while curPtr < len(string):
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值