1. 程式人生 > >python3 解一元一次方程

python3 解一元一次方程

題目

輸入一串字串表示一個一元一次方程,計算結果。 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))