真不知道自己哪里錯了,明明spyder上運行就是對的
import math
def quadratic_equation(a, b, c):
? ? x1=-b/2/a+math.sqrt((b/2/a)**2-c/a)
? ? x2=-b/2/a-math.sqrt((b/2/a)**2-c/a)
? ? return x1, x2
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)
import math
def quadratic_equation(a, b, c):
? ? x1=-b/2/a+math.sqrt((b/2/a)**2-c/a)
? ? x2=-b/2/a-math.sqrt((b/2/a)**2-c/a)
? ? return x1, x2
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)
2019-07-30
舉報
2019-07-31
2019-09-24
雖然你已經采納了結果,我還是想從原理上解釋你遇到的情況。
首先肯定一點,你的公式是對的,用筆算能出來正確的結果。
但Python的計算方式跟筆算不同,尤其是除法符號(/)。當兩個整數相除時是不會算出小數的(例:3/2的結果是1二不是1.5)
這就導致了你的式子在算第一題的delta時算成了0
因為按照Python的除法結果如下:
b/2/a = 3/2/2 = 1/2 = 0
后面因為c/a因為C是0所以無傷大雅,不然可能又會出問題,比如c等于1時。
而第二題因為恰好計算過程中都能整除,所以能得出正確結果。
關于小數運算和整數運算好像是在教程3-8的位置有講解。
解決方法:在計算過程中盡早加入小數的運算,下面我把原式中的2變成了2.0。這樣就能得出正確結果了。
2019-07-31
公式是對的,但是你的思維方式很乖
2019-07-30
公式一定要這樣算嗎?計算思維不同,算式也可能不同。2a可以先被除再進行別的運算啊,你可以試試在網頁去math.sqrt((b/2/a)**2-c/a),得到的結果是0.0。這樣的結果顯然是不對的。
2019-07-30
方程求根的表達式寫錯了,正確的應該是
def quadratic_equation(a, b, c):
? ? delta = b**2-4*a*c
? ? if delta >= 0:
? ? ? ? x1 = (-b+math.sqrt(delta))/(2*a)
? ? ? ? x2 = (-b-math.sqrt(delta))/(2*a)
? ? ? ? return x1,x2
? ? else:
? ? ? ? return?
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)