2017-09-14 16 views
-9

if文を使用するよう求めていることがわかりました。しかし、どうやってこれをやることができますか?Pythonを使った2次多項式の根

コマンドラインから3つの浮動小数点a、b、cを読み込み、二次多項式ax**2 + bx + c = 0の根を計算/プリントするプログラムqroots.pyを作成します。実際のルーツが存在する場合、つまりa、b、cの値が非負の判別式b**2 − 4ac >= 0を生成する場合のみ、プログラムで処理する必要があります。

判別式が負の場合、プログラムは実際のルートが存在しないというメッセージのみを出力します。

ヒント:math.sqrt()は、数値の平方根を返す組み込み関数です。

私はこれまでのところ、これを持っている:

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

は、まずお読みください。

import sys 
import math 

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

ターミナルは、これを行う必要がありますコマンドラインから入力します(ヒント:sys.argvを使用してください)。また、文字列をPythonの数値に変換する方法を理解する必要があります。

次に、b**2-4*a*c < 0を確認します。はいの場合は、実際のルーツがないことを約ValueErrorにしてください。エルス

根を解く:私のコメントにして@Joranビーズリーの答えに記載されているようにroots = (b ± sqrt(b**2-4*a*c))/(2*a)

0

手順:

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)) 

をあなたが好きなら判別式はゼロのみであれば、あなたもチェックすることができます2つのソリューションの1つを印刷します(この場合は明らかに同じです)。

関連する問題