iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python四则运算表达式求值的方法
  • 367
分享到

python四则运算表达式求值的方法

2023-07-02 17:07:36 367人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python四则运算表达式求值的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python四则运算表达式求值的方法”吧!四则运算表达式求值思路说明使用双栈来实现&am

这篇文章主要讲解了“python四则运算表达式求值的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python四则运算表达式求值的方法”吧!

四则运算表达式求值

思路说明

使用双栈来实现——存放数值的栈 nums 与存放运算符的栈 ops.

算法步骤

  • 对原始表达式字符串 exp 进行预处理, 将其转为一个元素对应一个数值或运算符的列表 explist.

  • 遍历 explist , 每个元素依次压入对应的栈中. 每次压入后, 判断当前两栈顶是否可进行乘除运算.栈顶可进行乘除运算的充要条件是, ops 栈顶为<*> ,</> 之一, 且 nums 中的元素比 ops 中的元素恰好多一个. 如果可以运算, 则运算, 并将运算结果压回 nums 中.

  • explist 遍历完之后, 所有乘除运算都已进行, 此时 ops 中只剩加法与减法, 接下来开始另一个循环, 一直运算即可. 最后 nums 中剩余的唯一元素即为表达式的值.

代码

def operation(a, b, op: str):    """    计算一次运算的结果    :param a: val    :param b: val    :param op: 运算符    :return: val    """    if op == '+':        return a+b    elif op == '-':        return a-b    elif op == '*':        return a*b    elif op == '/':        return a/b    else:        raise Exception('运算符不正确')def exp_str2list(exp: str):    """    将表达式exp:str转成list,每个元素对应一个数<num>或运算符<op>.    已知exp是标准的四则运算表达式字符串.    :param exp: str,表达式    :return: list    """    opset = {'+', '-', '*', '/'}  # 运算符集合    flag = -1    explist = list()    for i, char in enumerate(exp):  # 对表达式字符串中的每个字符        if char in opset:  # 若char是运算符            explist.append(exp[flag+1:i])  # 上一个运算符到当前运算符中间为数字,保存到explist            flag = i  # 更新flag到当前op位置            explist.append(char)  # 当前op亦加入explist    explist.append(exp[flag+1:])    return explistdef calculate_expression(exp: str):    """    表达式求值. 计算字符串exp所代表的表达式的值, 返回一个数值        已知exp是标准的四则运算表达式字符串, 且不含括号.    :param exp: str, 表达式    :return: val    """    opset = {'+', '-', '*', '/'}    nums = list()  # 数栈    ops = list()  # 运算符栈    explist = exp_str2list(exp)    print(explist)    for e in explist:        # e入栈        if e in opset:  # 若e是运算符            ops.append(e)        else:            nums.append(eval(e))        # 若e是优先级高的乘除法, 且        # nums与ops恰好匹配, 栈顶可以进行一次计算, 运算结果压入回nums        if ops and ops[-1] in {'*', '/'} and len(nums) == len(ops) + 1:            op = ops.pop()            y = nums.pop()            x = nums.pop()            nums.append(operation(x, y, op))    # 此时explist中元素已全部遍历, 同时乘除法均已被运算, 双栈只剩加减法有待运算. 众所周知, 加减法服从结合律, 接下来一路算到底即可.    while ops:        op = ops.pop()        y = nums.pop()        x = nums.pop()        x_op_y = operation(x, y, op)        nums.append(x_op_y)    return nums[0]if __name__ == '__main__':    exp = '1*43+542+532*432'    print(calculate_expression(exp))    print(eval(exp))

感谢各位的阅读,以上就是“python四则运算表达式求值的方法”的内容了,经过本文的学习后,相信大家对python四则运算表达式求值的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: python四则运算表达式求值的方法

本文链接: https://www.lsjlt.com/news/343309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python四则运算表达式求值的方法
    这篇文章主要讲解了“python四则运算表达式求值的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python四则运算表达式求值的方法”吧!四则运算表达式求值思路说明使用双栈来实现&am...
    99+
    2023-07-02
  • 四则运算表达式求值
    四则运算表达式求值两个要点1.中缀表达式转后缀表达式2.后缀表达式求值中缀表达式转后缀表达式从左到右遍历中缀表达式的每个数字和符号.若是数字就输出,成为后缀表达式的一部分.若是符号则判断其与栈顶符号的优先级,是右括号或者优先级低于等于栈顶符...
    99+
    2023-06-03
  • python四则运算表达式求值示例详解
    目录四则运算表达式求值思路说明算法步骤代码四则运算表达式求值 思路说明 使用双栈来实现——存放数值的栈 nums 与存放运算符的栈&nbs...
    99+
    2022-11-11
  • php实现四则运算的方法
    这篇文章给大家分享的是有关php实现四则运算的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php实现四则运算的方法:首先创建一个PHP示例文件;然后声明数字栈和符号栈;接着把运算串分解成每个字符到$arr数...
    99+
    2023-06-09
  • 正则表达式-问号的四种用法
    问号在正则表达式中有四种常见的用法:1. 匹配零个或一个字符:在正则表达式中使用问号表示前面的字符或子表达式可选,即出现零次或一次。...
    99+
    2023-09-02
    正则表达式
  • c语言逆波兰表达式求值的方法
    本篇内容主要讲解“c语言逆波兰表达式求值的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c语言逆波兰表达式求值的方法”吧!题目根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *...
    99+
    2023-06-19
  • python正则表达式的用法
    本篇内容介绍了“python正则表达式的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简单模式 我们...
    99+
    2022-10-18
  • SQL正则表达式及mybatis中使用正则表达式的方法
    小编给大家分享一下SQL正则表达式及mybatis中使用正则表达式的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql...
    99+
    2022-10-18
  • 详解python的运算符与表达式
    目录表达式什么是表达式?运算符算术运算符赋值运算符比较运算符逻辑运算符成员运算符对象实例运算符位运算符总结表达式 什么是表达式? # • 表达式由一个或多个操作数通过操作符组合而成。...
    99+
    2022-11-12
  • Python中正则表达式的用法
    在这里跟大家分享一个Python编程过程中的小知识点——正则表达式! 那正则表达式到底是什么呢?又是用来干什么的呢? 正则表达式 是包含文本和特殊字符的字符串, 为高级的文本模式匹配, 抽取, 与文本形式的搜索和替换功能提供了基础...
    99+
    2023-01-31
    正则表达式 Python
  • python的简单四则运算语法树可视化
    目录简单四则运算语法树可视化解析 AST粗糙的遍历方法渲染显示主流的遍历方法完整代码说明简单四则运算语法树可视化 前几天有一篇博客是关于四则运算和二叉树的,我是把四则运算用二叉树写出...
    99+
    2023-05-14
    python四则运算 python四则运算语法树 python语法树可视化
  • Python正则表达式的使用方法是什么
    这篇文章主要讲解了“Python正则表达式的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python正则表达式的使用方法是什么”吧!什么是正则表达式简而言之,正则表达式(re...
    99+
    2023-06-16
  • python中使用正则表达式的方法详解
    目录search(pattern, string, flags=0)findall(pattern, string, flags=0)sub(pattern, repl, strin...
    99+
    2022-11-13
  • python使用正则表达式的方法有哪些
    在Python中,可以使用re模块来使用正则表达式。以下是一些使用正则表达式的方法:1. re.match(pattern, str...
    99+
    2023-08-18
    python
  • python的运算符与表达式怎么用
    这篇文章主要为大家展示了“python的运算符与表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python的运算符与表达式怎么用”这篇文章吧。表达式什么是表达式?# •&n...
    99+
    2023-06-26
  • Python正则表达式的基本用法
    本篇内容介绍了“Python正则表达式的基本用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正则表达式中特殊的符号:“.” 表任意字符“^...
    99+
    2023-06-17
  • Python 正则表达式的高级用法
    对于Python来说,学习正则就要学习模块re的使用方法。本文将展示一些大家都应该掌握的高级技巧。 编译正则对象 re.compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有...
    99+
    2022-06-04
    高级 正则表达式 Python
  • 正则表达式regexp_replace的使用方法
    目录前言常用案例总结前言 regexp_replace的使用非常灵活,且容易忘记,故做此笔记。 没有过多的介绍使用说明,只是根据个人理解列出很多相似案例,个人觉得通过对比,...
    99+
    2022-11-13
  • 替换javascript正则表达式的方法
    这篇文章主要讲解了“替换javascript正则表达式的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“替换javascript正则表达式的方法”吧!javascript正则表达式使用替换...
    99+
    2023-06-14
  • c语言逻辑表达式的运算规则是什么
    C语言逻辑表达式的运算规则如下:1. 逻辑与(&&):如果两个操作数都为真(非零),则结果为真;否则为假(0)。2. 逻辑或(||)...
    99+
    2023-08-16
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作