2017-09-20 2 views
-2

Je ne reçois aucun message d'erreur, mais mon code n'imprime pas les valeurs x.fonction quadratique racines (a, b, c) fonction. 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

Veuillez corriger l'indentation dans votre code. –

+0

Vous entrez a, b et c, et vous définissez une fonction appelée 'roots', et c'est tout. Si vous voulez que le code dans 'roots' soit exécuté, vous devez * appeler * la fonction. Le seul appel 'roots' vient de' roots' lui-même, après les retours. Déplacez-le en dehors de la fonction. –

+0

vous n'appelez pas 'racines'. Supprimez cet onglet avant 'print'. – isalgueiro

Répondre

0

Vous avez indenté print(roots(a,b,c)). Cette ligne doit être à zéro indentation car cela ne fait pas partie de la définition de la fonction - vous appelez la fonction.

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

Corrigez correctement votre code et vous obtiendrez votre réponse.

+0

Cela a fonctionné, merci. Mais puisque j'ai des nombres complexes dans certaines solutions, comment puis-je effectuer un unittest? – bence

+0

Si vous souhaitez effectuer un calcul arithmétique plus complexe avec des nombres réels, imaginaires ou complexes, vous devez utiliser http://deeplearning.net/software/theano/introduction.html package –