亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

真不知道自己哪里錯了,明明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)


正在回答

5 回答


https://img1.sycdn.imooc.com//5d40fec80001d06504030360.jpg我試了沒問題啊,不過感覺最好還是測一下Δ比較好
0 回復 有任何疑惑可以回復我~
#1

慕粉31740082 提問者

測過了,delta是對的謝謝
2019-08-02 回復 有任何疑惑可以回復我~

雖然你已經采納了結果,我還是想從原理上解釋你遇到的情況。

首先肯定一點,你的公式是對的,用筆算能出來正確的結果。

但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。這樣就能得出正確結果了。

t?=?math.sqrt((b/2.0/a)**2-c/a)
????x1=-b/2.0/a?+?t
????x2=-b/2.0/a?-?t


3 回復 有任何疑惑可以回復我~

公式是對的,但是你的思維方式很乖

0 回復 有任何疑惑可以回復我~
#1

qq_lovingyou_1

(-b+sqrt(b**2-4*a*c))/(2*a)是否會更加清晰一點
2019-07-31 回復 有任何疑惑可以回復我~
#2

慕粉31740082 提問者 回復 qq_lovingyou_1

的確自己思維,就是以前高中算式的時候的習慣吧,喜歡寫分數。只是想問一下是否網頁版的答案不夠健全。。謝謝
2019-08-02 回復 有任何疑惑可以回復我~

公式一定要這樣算嗎?計算思維不同,算式也可能不同。2a可以先被除再進行別的運算啊,你可以試試在網頁去math.sqrt((b/2/a)**2-c/a),得到的結果是0.0。這樣的結果顯然是不對的。

0 回復 有任何疑惑可以回復我~

方程求根的表達式寫錯了,正確的應該是

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)


0 回復 有任何疑惑可以回復我~
#1

慕粉31740082 提問者

公式一定要這樣算嗎?計算思維不同,算式也可能不同。2a可以先被除再進行別的運算啊,你可以試試在網頁去math.sqrt((b/2/a)**2-c/a),得到的結果是0.0。這樣的結果顯然是不對的。
2019-07-30 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758398    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

真不知道自己哪里錯了,明明spyder上運行就是對的

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號