2017-09-14 58 views
-9

我知道這是要求我使用if語句。但我怎麼能這樣做呢?Python的二次多項式的根

編寫一個程序qroots.py,它從命令行讀取三個浮點數a,b,c並計算/打印二次多項式的根ax**2 + bx + c = 0。你的程序只需要處理真實根存在的情況,即當a,b,c的值產生非負判別式b**2 − 4ac >= 0

當判別式爲負數時,程序應該只打印一條不存在真正根的消息。

提示:math.sqrt()是返回數字平方根的內置函數。

我有這到目前爲止:

import sys 
import math 

a = float(sys.argv[1]) 
b = float(sys.argv[2]) 
c = float(sys.argv[3]) 

終端應該這樣做:

qroots.py 1-3 2

1.0 2.0

+3

請閱讀如何問在SO。這不是一個解決作業的網站。顯示你所做的 –

+1

提示:https://en.wikipedia.org/wiki/Quadratic_formula –

+1

歡迎來到StackOverflow!在問這個問題之前,你有沒有讀過[如何提問](https://stackoverflow.com/help/how-to-ask)? – Jerrybibo

回答

0

首先讀出的從命令行輸入(提示:使用sys.argv)。你也需要弄清楚如何將字符串轉換爲python數字。然後檢查是否b**2-4*a*c < 0。如果是的話,那麼提出一個ValueError關於沒有真正的根源。

否則解決的根源:roots = (b ± sqrt(b**2-4*a*c))/(2*a)

0

的方法,由我的評論和@Joran比斯利的答案描述下:

import sys 
from math import sqrt 

a, b, c = sys.argv[1:] 
a = float(a) 
b = float(b) 
c = float(c) 
if b**2-4*a*c < 0: 
    print("there's no real root") 
else: 
    print((-b+sqrt(b**2-4*a*c))/(2*a), (-b-sqrt(b**2-4*a*c))/(2*a)) 

如果你願意,你也可以檢查判別爲零,只打印兩個解決方案之一(在這種情況下顯然是相同的)。