eq = input() eq1 = eq.replace("=","-(") + ")" c = eval(eq1, {'X': 1j}) print(int(-c.real/c.imag))
例如:solve("x - 2x + 5x - 46(235-24) = x + 2") 下面就來解讀下代碼吧。 首先是第一行(除input()),它將等式進行了變形,生成了一個結果為0的算式 “x - 2x + 5x - 46(235-24) -( x + 2)”。
第二行用eval來執行這個算式,並將x = 1j代入算式,結果是-9708+3j。
注意x = 1j,所以這個方程就化簡為“-9708+3x = 0”了,只要將-(-9708) / 3就能得到x了。
而-9708是這個復數的實部,3是這個復數的虛部,於是結果變成了“-c.real/c.imag”。
因此很顯然,這個函數是不能解復數方程的。