2017-09-20 9 views
-2

エラーメッセージは表示されませんが、コードではx値が出力されません。二次式roots(a、b、c)関数。 python

from math import sqrt 
a= float(input("a= ")) 
b= float(input("b= ")) 
c= float(input("c= ")) 
def roots(a,b,c): 
    disc = b**2 - 4*a*c 
    if disc >= 0: 
     return ("x= ",(-b + sqrt(disc))/(2*a), "x= ",(-b - sqrt(disc))/(2*a)) 
    if disc < 0: 
     return ("x= ",-b/(2*a),"+",sqrt(disc*(-1))/(2*a),"i" \ 
       "x= ",-b/(2*a),"-",sqrt(disc*(-1))/(2*a),"i") 
    print(roots(a,b,c)) 
+2

コードに字下げを修正してください。 –

+0

a、b、cを入力し、 'roots'という関数を定義します。それだけです。 'roots'のコードを実行させたい場合は、関数を*呼び出す*必要があります。 'roots'への唯一の呼び出しは、' roots'の中から返された後です。それを関数の外に移動します。 –

+0

あなたは 'ルーツ'を呼んでいません。 'print'の前にそのタブを削除してください。 – isalgueiro

答えて

0

あなたはインデントされたprint(roots(a,b,c))です。この行はゼロインデントにする必要があります。これは関数定義の一部ではないため、関数を呼び出すことになります。

0
from math import sqrt 
a= float(input("a= ")) 
b= float(input("b= ")) 
c= float(input("c= ")) 
def roots(a,b,c): 
    disc = b**2 - 4*a*c 
    if disc >= 0: 
     return ("x= ",(-b + sqrt(disc))/(2*a), "x= ",(-b - sqrt(disc))/(2*a)) 
    if disc < 0: 
     return ("x= ",-b/(2*a),"+",sqrt(disc*(-1))/(2*a),"i" \ 
       "x= ",-b/(2*a),"-",sqrt(disc*(-1))/(2*a),"i") 
print(roots(a,b,c)) 

コードを正しくインデントすると、回答が得られます。

+0

それは働いて、ありがとう。しかし、いくつかのソリューションでは複雑な数字があるので、どのようにユニットテストを実行しますか? – bence

+0

実数、虚数または複素数でより複雑な算術演算を実行する場合は、http://deeplearning.net/software/theano/introduction.htmlパッケージを使用する必要があります –

関連する問題