Python搜索代数函数

Python搜索代数函数,python,function,search,algebra,Python,Function,Search,Algebra,我正在尝试做一个搜索函数来处理代数问题。我想要Wolfram Alpha之类的东西,但我正在为此构建python框架。它应该能够计算出等号两边的多个变量和方程。我最近问了一个程序的验证器,所以我需要一个循环,通过一组数字,找出每个变量等于什么。我的问题是小数。我建议使用搜索功能。以下是方程求解器: def s_equation(a): left, right = a.split('=') return eval(left) == eval(right) 任何帮助都是有帮助的 eva

我正在尝试做一个搜索函数来处理代数问题。我想要Wolfram Alpha之类的东西,但我正在为此构建python框架。它应该能够计算出等号两边的多个变量和方程。我最近问了一个程序的验证器,所以我需要一个循环,通过一组数字,找出每个变量等于什么。我的问题是小数。我建议使用搜索功能。以下是方程求解器:

def s_equation(a):
   left, right = a.split('=')
   return eval(left) == eval(right)
任何帮助都是有帮助的

eval不起作用,因为left和right是字符串,而不是表达式。此外,您必须进行大量验证,以使用户可能输入的内容成为有效的Python表达式。考虑一下你可能得到的一些值:

# The typical person's notation for x-squared isn't valid Python
x^2 + x - 3
# 3x means 3 * x to us, but to python it means nothing
3x + 4
# Some people use % to represent division, but that's a modulo operator to Python
3 % 4x
# Python doesn't understand the distributive property
3(4 - x)
# People might use some functions in a way Python doesn't understand
cos x
# Square brackets are used synonymously with parentheses
x[(x^2 - 5)(x^3 - 5x)]
因此,简而言之,您需要某种引擎将纯文本表达式转换为有效的Python表达式。这不是一项容易的任务,但肯定可以做到


尽管您的项目非常雄心勃勃,但我认为这是一种使用Python的好方法!如果你想出了一种智能的方法将方程作为字符串转换为有效的Python,你应该立即分享它,因为科学和数学界的很多人都可以使用它。

你可能想使用SymPy这样的库。这是一个非常有趣的话题,特别是对于像你这样的年轻程序员来说。您真正想要做的是创建一个“语法树”,这是一个对象树,表示数学表达式的含义。您可以编写一个解析器来检查字符串,并逐个字符“理解”它,同时构建树。然后它变得有趣,因为你可以用树做一些很酷的事情,比如发现模式或计算表达式。你应该好好尝试一下,它会扩展你的思维!例如,这些幻灯片。不要被希腊字吓倒!我提出了一些建议。如果您感兴趣,请点击以下页面: