如何在字符串中找到操作元和操作符

2024-09-29 21:50:53 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想知道如何检测数学表达式中的操作数和运算数

例如:1+2*9/2

我试着用函数把操作数和运算分离成它们自己的形式,因为我们必须检查有多少操作必须按正确的顺序(PEDMAS)完成。在

我已经把方程取出来了,把所有的空格都取出来了,现在我要求出方程中操作数和运算的个数,然后用return来找到给定数学表达式的答案。在

有什么提示吗?在


Tags: 函数答案return顺序表达式数学形式方程
3条回答

如果允许,我建议您检查ast模块。它的目的是使用Python自己的解析器为您完成类似的工作。在

对于实际的应用程序,您可能会使用Ply这样的解析器生成器。在

对于这样一个简单的家庭作业,您可能需要手工编写一个解析器。首先标记它(str.split),找到括号,然后使用优先级对其他操作进行分组。在

如果表达式不能像示例那样简单,则可以使用RPN - reverse polish notation

如果您的表达式非常简单(只有基操作和小于10的值),并且您只需要计数就可以使用类似的方法,我想:

ops = '+-*/'
operationsCount= sum(expr.count(op) for op in ops)
operandsCount = len(expr) - operationsCount

或者你可以用这个:

^{2}$

现在您已经有了许多运算符和操作数—而且很容易在ops/opd上正确地拆分行并计算表达式。在

import re
exp = 1+2*9/2
ops = re.findall(r'[\+\-*/]', exp)
print len(ops)

我不知道你为什么要求操作数 我想

^{2}$

更好。在

所以我认为正则表达式可以帮助您

相关问题 更多 >

    热门问题