Python函數之返回多值一元二次方程的定義是:ax² + bx + c = 0請參考求根公式:x = (-b±√(b²-4ac)) / 2a
1#import?math def?quadratic_equation(a,?b,?c): ????de=b**2-4*a*c ????if?de>=0: ????????x1=(-b+math.sqrt(de))/(2*a) ????????x2=(-b-math.sqrt(de))/(2*a) ????????return?x1,x2 ????else: ????????return print?quadratic_equation(2,?3,?0) print?quadratic_equation(1,?-6,?5) 3#import?math def?quadratic_equation(a,?b,?c): ????t?=?math.sqrt(b?*?b?-?4?*?a?*?c) ????return?(-b?+?t)?/?(2?*?a),(?-b?-?t?)/?(2?*?a) print?quadratic_equation(2,?3,?0) print?quadratic_equation(1,?-6,?5) 2#import?math def?quadratic_equation(a,?b,?c): ????if?(b*b-4*a*c)<0: ????????return?"no?real?root" ????else: ????????x=b*b-4*a*c ????????return?(-b+math.sqrt(x))/(2*a),(-b-math.sqrt(x))/(2*a) print?quadratic_equation(2,?3,?0) print?quadratic_equation(1,?-6,?5)
一元二次方程雖然我現在只上高中知道怎么在作業本上解但是在python完全不能理解def quadratic_equation(a, b, c):下面的計算過程誰能幫我理解一下?
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)
def quadratic_equation(a, b, c):
這3個代碼里面不變的是什么?
計算公式吧#de=b**2-4*a*c
? ?if de>=0:
? ? ? ?x1=(-b+math.sqrt(de))/(2*a)
? ? ? ?x2=(-b-math.sqrt(de))/(2*a)
? ? ? ?return x1,x2
#def quadratic_equation(a, b, c):
? ?t = math.sqrt(b * b - 4 * a * c)
? ?return (-b + t) / (2 * a),( -b - t )/ (2 * a)
#def quadratic_equation(a, b, c):
? ?if (b*b-4*a*c)<0:
? ? ? ?return "no real root"
? ?else:
? ? ? ?x=b*b-4*a*c
? ? ? ?return (-b+math.sqrt(x))/(2*a),(-b-math.sqrt(x))/(2*a)
2018-01-21
你首先要想明白一件事,方法并不是在解一元二次方程,
def quadratic_equation(a, b, c)? 你是在定義一個方法,它的意義是你傳給這個方法a,b,c?三個參數,然后回傳給你返回值,你想要得到的結果是? ?x = (-b±√(b2-4ac)) / 2a? ,是兩個值所以要有兩個返回值,
而這個返回值是通過計算得出的結果X1,X2?或者 (-b+math.sqrt(x))/(2*a),? (-b-math.sqrt(x))/(2*a)?或者(-b + t) / (2 * a),? ( -b - t )/ (2 * a)?
再來分開說,下邊是計算的過程
def?quadratic_equation(a,?b,?c):?????????#這個方法需要傳入a,b,c三個參數
????????de=b**2-4*a*c? ? ????????????????????????#de=b的平方-4*a*c ( δ 二次方程的判別式)
????????if de>=0:????????????? ????????????????????? #如果de大于0 (一元二次方程有解的要求)
????????x1=(-b+math.sqrt(de))/(2*a)? ? ? #x1=(-b+( 根號下(de) ) )除以(2*a) ????#de=b**2-4*a*c
????????x2=(-b-math.sqrt(de))/(2*a)????????#同上
????????return?x1,x2????????????????????????????????#將方法中定義的 x1,x2?返回
現在稍微理解了么?
def jiafa(a,b):????????????????#定義一個方法?方法的名字是 jiafa?需要傳入a,b?兩個參數
????qiuhe=a+b????????????????# = =~就是?a+b
????return qiuhe????????????? ? #?將結果返回
這就是一個簡單的加法,將return?換一下
def jiafa2(a,b):????????????????#定義一個方法?jiafa2 需要傳入a,b?兩個參數
????qiuhe=a+b????????????????# = =~就是?a+b
????return a+b? ? ? ? ? ? ? ? #?將結果返回 (這樣第二行的qiuhe就沒意義了?可以刪掉)
兩個方法完全相同
print jiafa(1,3)????????????????#打印?jiafa(1,3)??
print jiafa2(1,3)????????????????#打印?jiafa2(1,3)?
結果是一樣的
還有不管什么情況下,只要方法中走到 return 的時候,就會退出該方法,不在繼續
(希望能幫助你,python 學起來還算簡單,在遇到卡住的時候,一行一行的看,每一行都用#寫注解,能夠幫助你更直觀的看代碼)
2018-01-21
def 是定義 函數名字和函數內容? +? ?quadratic_equation(括號里面的 是 一元二次方程里面的? a,b,c)這是函數名? +? ?函數名下面是? 定義的函數如何計算, 也就是求根公式。?
print? +? 函數名?quadratic_equation()? ? 是調用你定義的函數的計算方法。
quadratic_equation(括號里面的 是 一元二次方程里面的? a? ?b? ?c)也就是帶入參數在函數里面計算。