python3 解一元一次方程
阿新 • • 發佈:2018-12-20
題目
輸入一串字串表示一個一元一次方程,計算結果。 eg:10x-2x-8=x+7+4x
思路
1、將等號右邊的減到左邊,即替換=為’-(’,最後表示式加上’)’; 2、此題給出的x和數字之間沒有乘號,我們現在所有x前面加上*號; 3、考慮到係數為1、-1和左括號後的x前不應該有乘號,我們將這些地方的乘號去除; 4、用python的eval函式可以生成表示式,將變數=1j帶入得到結果,此時會得到real+imag j這樣的一個結果,可以發現如果把j替換為x,令這個式子為0就是我們想要的最簡的方程,結果x=j=(-real)/imag。
CODE
def solve(eq,var='x'):
eq1 = eq.replace("=","-(")+")"
eq1 = eq1.replace("x","*x")
eq1 = eq1.replace("+*x","+x")
eq1 = eq1.replace("-*x","-x")
eq1 = eq1.replace("(*x","(x")
print(eq1)
c = eval(eq1,{var:1j})
return -c.real/c.imag
test = '10x-2x-8=x+7+4x'
print(solve(test))