gpt4 book ai didi

python - 如何检查方程中运算符的顺序是否正确?

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:57 27 4
gpt4 key购买 nike

我正在尝试创建一个将方程式作为输入并根据操作对其进行评估的函数,规则是我应该让运算符 (*,+,-,%,^) 正确的数学表达式,例子:

Input: 6**8 
Result: Not correct

原因: * 旁边有另一个 * 而不是数字或数学表达式

Input: -6+2
Result: Not correct

原因:“-”在开头,没有落在两个数字之间。

Input: 6*(2+3)
Result: Correct

原因:“*”在数学上正确的表达式“(2+3)”旁边

最佳答案

1。选项:评估

eval 带有 try-except 的表达式:

try:
result = eval(expression)
correct_sign = True
except SyntaxError:
correct_sign = False

优点:

  • 非常简单快捷

缺点:

  • Python 接受您可能不想要的表达式(例如 ** 在 python 中有效)
  • eval 不安全

2。选项:算法

在编译器中使用算法,使数学表达式对 pc 可读。这些算法也可用于评估表达式是否有效。我的目的不是解释这些算法。外面有足够的资源。

这是您可以执行的操作的一个非常简短的结构:

  • 解析一个中缀表达式
  • 将中缀表达式转换为后缀表达式
  • 评估后缀表达式

您需要了解后缀和中缀表达式的含义。

资源:

调车场算法:https://en.wikipedia.org/wiki/Shunting-yard_algorithm

反向抛光符号/修复后符号:https://en.wikipedia.org/wiki/Reverse_Polish_notation

Python 内置分词器:https://docs.python.org/3.7/library/tokenize.html

优点:

  • 可靠
  • 适用于复杂的表达式
  • 您不必重新发明轮子

缺点

  • 复杂化理解
  • 实现起来很复杂

关于python - 如何检查方程中运算符的顺序是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55269186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com