本文所述實例為Python用3行代碼實現解一元一次方程,代碼簡潔高效,具體用法如下:
>>> solve("x - 2*x + 5*x - 46*(235-24) = x + 2")3236.0
功能代碼如下:
def solve(eq,var='x'): eq1 = eq.replace("=","-(")+")" c = eval(eq1,{var:1j}) return -c.real/c.imag
下面就來解讀下代碼吧。
首先是第一行,它將等式進行了變形,生成了一個結果為0的算式“x - 2*x + 5*x - 46*(235-24) -( x + 2)”。
第二行用eval來執行這個算式,并將x = 1j代入算式,結果是-9708+3j。
注意x = 1j,所以這個方程就化簡為“-9708+3x = 0”了,只要將-(-9708) / 3就能得到x了。
而-9708是這個復數的實部,3是這個復數的虛部,于是結果變成了“-c.real/c.imag”。
因此很顯然,這個函數是不能解復數方程的。
順帶一提,Python 2.x的/運算會使用整數除法,導致小數部分丟失,所以要獲得正確結果就應該使用Python 3.x。
希望本文所述實例對大家學習Python能有所幫助。
新聞熱點
疑難解答