2016-12-05 10 views
-1

次のコードは、aが0にはならない二次問題ソルバーのためのコードです。現在、私は本当に奇妙な答えを得ており、問題を把握できていないようです。思考?二次式の問題

def descriminant(a, b, c): #Setting input perameters for descriminant 
if a>0 or a<0: #If a isnt equal to 0, find descriminant 
    disc = (b**2-4*a*c) #Defining what descriminant does with disc 
    if disc>0: 
     disc1=float(disc)**0.5 
     return disc1 #returns and allows to be used again instead of print which doesnt allow you to use it again 

    else: 
     print("The discriminant must be greater than 0") 
else: #if a is equal to 0 
    print ("A cannot equal 0") #Tell the user a cant equal 0 


def quad_form(a, b, c): #Defining quad form w/ input a, b, c 

disc2=float(descriminant(a, b, c)) 


quad_form1=((-1*b) + disc2/float((2*a))) #Defining + forumula for quad form 
quad_form2=((-1*b) - disc2/float((2*a))) #Defining - forumula for quad form 

return quad_form1, quad_form2 


UI=input("Enter the coefficients of a quadratic separated by commas where A is not equal to zero: ") #User Input 
a=float(UI[0]) 
b=float(UI[1]) 
c=float(UI[2]) 

print quad_form(a, b, c) 
+1

予想される回答と実際の回答は何ですか?デバッグの助けを求める質問(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体の中でそれを再現するのに必要な最短コードが含まれていなければなりません。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) – MikeJRamsey56

答えて

1

平方根を2回とっているようです。一度​​、次にquad_form()になります。そのうちの1つを削除する必要があります。

EDIT: あなたquad_form表現も間違っている:

quad_form1=((-1*b) + disc3/float((2*a))) 

が次の行のために同様に

quad_form1=((-1*b) + disc3)/float((2*a)) 

以上の読み取り可能

quad_form1=(-b + disc3)/float(2*a). 

でなければなりません
+0

これは良い@Adityaカシ?私はまだ正解を得ていません – Addison

+0

直接式でdisc2を使用してください。それを 'int'にキャストしないでください。また、ユーザーの入力は必ず整数ですか?どちらの場合でも、 'int'の代わりにa、b、cを' float'にするべきです。 –

+0

私はこれらの変更を行いましたが、出力には役立たないようです。数字はちょうど正しくない、私はオンライン電卓を使用して、それを自分で行った@Aditya Kashi – Addison

関連する問題