我是靠谱客的博主 疯狂奇异果,这篇文章主要介绍python解一元方程_python之解一元一次方程表达式,现在分享给大家,希望可以做个参考。

import re

class Item:

def __init__(self,imag=0,real=0):

self.imag = imag

self.real = real

def __str__(self):

return format("(%.6f : %.6fX)")%(self.real,self .imag)

def __repr__(self):

return self.__str__()

def _calc(a,b,op):

if op == '+':

a.imag += b.imag

a.real += b.real

return a

elif op == '-':

a.imag -= b.imag

a.real -= b.real

elif op == '*':

if b.imag == 0:

a.imag *= b.real

a.real *= b.real

else:

a.imag,a.real,b.imag,b.real= b.imag,b.real,a.imag,a.real

a.imag *= b.real

a.real *= b.real

elif op == '/':

if b.real== 0:

raise Exception

a.imag /= b.real

a.real /= b.real

return a

def calculate(list):

def _ca(oplist,nulist,i,stop,opers):

op = oplist[-1]

while op in opers:

first,second = nulist[-2:]

_calc(first,second,op)

del nulist[-1]

del oplist[-1]

if len(oplist):

op = oplist[-1]

else:

op = stop

else:

oplist.append(i)

oplist = []

nulist = []

for i in list:

if isinstance(i,str):

if i == '(':

oplist.append(i)

elif i in '+-':

if len(oplist):

_ca(oplist,nulist,i,"(","+-*/")

else:

oplist.append(i)

elif i in "*/":

if len(oplist):

_ca(oplist,nulist,i,"(","*/")

else:

oplist.append(i)

else:

if len(oplist):

_ca(oplist,nulist,i,"stop","+-*/")

del oplist[-1]

del oplist[-1]

else:

nulist.append(i)

_ca(oplist,nulist,i,"stop","+-*/")

return nulist[0]

if __name__ == "__main__":

# data = "((-3x))=9-9+2*x"

# data = "((-1+2x)/3)-(7+(8-9))*(1/2) = 5x + (3x-2)"

# data = "2x=10"

data = "(((4x)))=5+1x"

data = " "+re.subn("\s+|=(.*)",lambda obj:"-(%s)"%obj.groups(1) if '=' in obj.group() else "",data)[0]

regex = re.compile("(?<=[-+*/( ])-?\d+x|(?<=[-+*/( ])-?\d+|[-+*/()x]")

data = re.findall(regex,data)

calclist = []

for i in data:

if re.fullmatch("-?\d+",i):

calclist.append(Item(real=int(i)))

elif re.fullmatch("-?\d+x",i):

calclist.append(Item(imag=int(i[:-1])))

elif i == "x":

calclist.append(Item(imag=1))

else:

calclist.append(i)

result = calculate(calclist)

print(-result.real/result.imag)

最后

以上就是疯狂奇异果最近收集整理的关于python解一元方程_python之解一元一次方程表达式的全部内容,更多相关python解一元方程_python之解一元一次方程表达式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部