2016-12-05 81 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

它看起來像你平方根兩次。一旦在​​,然後在quad_form()。你應該刪除其中的一個。

編輯: 你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). 

同樣,對於下一行,

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

這更好@Aditya喀什?我仍然沒有得到正確的答案 – Addison

+0

只需在公式中直接使用disc2即可。不要將它轉換爲int。另外,用戶的輸入是否必須是整數?無論哪種情況,您都應該使用a,b和c'float'而不是'int'。 –

+0

好的,我做了這些改變,但它似乎沒有幫助輸出。這些數字是不正確的,我已經使用在線計算器,並自己做了@Aditya Kashi – Addison