如何在python 2.7中“翻译”数学表达式

时间:2014-08-24 12:21:19

标签: python math expression

我试图'翻译'(我的意思是python可以理解的语言)'2x ^ 2 + 3',我想得到'2 * x ^ 2 + 3(所以python可以理解它)。

eq = '2x^2+3'

newlist = []

if '^' in eq:
   eq = eq.replace('^', '**')
else:
   print ''

for x in range (len(eq)):
    newlist.append(eq [x])

print newlist

这样做我得到['2','x','*','*','2','+','3'],但我想要它最终获得'2 * x ** 2 + 3'因此Python可以理解它。

2 个答案:

答案 0 :(得分:1)

您的结果是一个字符串列表,可以像这样连接:

expression = "".join(my_list)

但是你没有拿到你希望2x成为2 * x的部分。我会留下那部分让你弄明白

答案 1 :(得分:0)

您可以使用称为infix-postfix转换的技术将字符串转换为可以计算的表达式。我在Objective-C中使用这种技术在iOS上创建一个图形计算器应用程序。我会事先说,很难支持人们使用的所有不同的数学缩略词 - 例如。 2(x + 3)或2 ^ -2--但这是可能的。

基本上你处理字符串并构建一个中缀,它是表达式中顺序元素的数组。然后将其转换为后缀,后者会更改元素的顺序以便于评估。 Here是一个演示infix-postfix转换的网站。

这是一个gist,显示了Python中的后缀计算器实现,但我还没有尝试过。希望它能让您了解过程是什么样的。