如何';翻译';python 2.7中的数学表达式

如何';翻译';python 2.7中的数学表达式,python,math,expression,Python,Math,Expression,我试图“翻译”(我指的是python可以理解的语言)“2x^2+3”,我想得到“2*x^2+3”(这样python就可以理解它) 这样我得到了['2'、'x'、'*'、'*'、'2'、'+'、'3'],但我只想最终得到'2*x**2+3',这样Python就可以理解它。可以使用一种称为中缀后缀转换的技术将字符串转换成一个可以计算的表达式。例如,我在Objective-C中使用此技术在iOS上创建了一个图形计算器应用程序。我要说的是,很难支持人们使用的所有不同的数学速记,例如2(x+3)或2^-2

我试图“翻译”(我指的是python可以理解的语言)“2x^2+3”,我想得到“2*x^2+3”(这样python就可以理解它)


这样我得到了['2'、'x'、'*'、'*'、'2'、'+'、'3'],但我只想最终得到'2*x**2+3',这样Python就可以理解它。

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

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
本质上,您需要处理字符串并构建中缀,它是表达式中连续元素的数组。然后将其转换为后缀,这会更改元素的顺序以便于计算。是一个演示中缀后缀转换的网站


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

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

expression = "".join(my_list)

但是你没有选择你想要2x变成2*x的部分。我将把这一部分留给你去弄清楚你的尝试是什么?你的问题不清楚:你做了什么,发生了什么,你期望发生什么?