当前位置: 首页 > 面试题库 >

数学表达式评估

宋高寒
2023-03-14
问题内容

什么是实现将采用字符串并根据运算符优先级输出结果的python程序的最佳方法(例如:“ 4 + 3 * 5”将输出19)。我在谷歌上寻找解决这个问题的方法,但是它们都太复杂了,我正在寻找一个(相对)简单的方法。

澄清:我需要比eval()稍微先进的东西-我希望能够添加其他运算符(例如,最大运算符-4 $ 2 = 4),或者,我对此在学术上比对专业更感兴趣-我想知道
该怎么 做。


问题答案:

如果您“对学术感兴趣”,则想了解如何编写具有运算符优先级的解析器。

Python中的简单的自上而下解析是一篇不错的文章,它构建了一个示例解析器来完全执行您想做的事情:评估数学表达式。

我强烈建议您尝试编写自己的第一个解析器-这是“啊, 那是 如何工作”的时刻之一!



 类似资料:
  • Matplotlib 中的文本字符串都可以使用 Text Markup(一种文本标记语言)显现出来,具体的使用方法是将文本标记符放在一对美元符号 内,语法格式如下: 如果要绘制下标和上标,您需要使用 和 符号,下面是一个简单的示例: 上面代码的输出结果: Matplotlib数学表达式绘制 从上述示例可以看出,虽然数学表达式种类繁多,但是 Matplotlib 对各种数学符号都做了良好的支持。

  • 问题内容: 如何解析和评估字符串(例如)中的数学表达式而不调用其数值? 在该示例中,我希望函数接受并返回。 问题答案: 我最终选择了该解决方案,该解决方案可用于对正整数和负整数进行求和(对正则表达式进行少许修改也可用于十进制): 我不确定它是否比eval()快,但是由于必须多次执行该操作,因此与创建javascript编译器实例负载相比,运行此脚本要舒服得多

  • 问题内容: 它们各自的答案使我思考如何有效地解析(或多或少受信任的)用户给出的单个数学表达(按照该答案的大致术语)来自数据库的20k到30k的输入值。我实施了一个快速而肮脏的基准测试,因此可以比较不同的解决方案。 #解决方案#1:评估[是的,完全不安全] #解决方案#2a:sympy-evalf( http://www.sympy.org) #解决方案#2b:sympy-lambdify( htt

  • Evaluates simple math expression like 2*4 or 10/2 and outputs its result. You can use \ operator which is equivalent to round(a/b). 计算简单的数学表达式,比如2*4 或 10/2,并输出结果。\ 操作符结果同 round(a/b)。 Very useful in CS

  • 本文向大家介绍评估后缀表达式,包括了评估后缀表达式的使用技巧和注意事项,需要的朋友参考一下 为了求解数学表达式,我们需要前缀或后缀形式。将中缀转换为后缀后,我们需要后缀评估算法来找到正确的答案。 在这里,我们还必须使用堆栈数据结构来解决后缀表达式。 从后缀表达式中,找到一些操作数后,将它们压入堆栈。找到某个运算符后,将从堆栈中弹出两个项目,并按正确的顺序执行操作。之后,结果也被压入堆栈中以备将来使

  • 问题内容: 我正在试验sympy,遇到了一个我无法解决的问题。 使用scipy,我可以编写一个表达式并为x值数组求值,如下所示: 使用sympy,我可以编写相同的表达式,如下所示: 通过执行以下操作,我可以为单个值评估该表达式: 但是我无法像我使用scipy一样,想出如何对x值数组进行评估。我该怎么做? 问题答案: 首先,目前SymPy不保证支持numpy数组,在这种情况下,这就是您想要的。检查此