2016-09-12 1 views
1

J'essaye de faire un programme qui convertit des équations quadratiques de forme standard à la forme factorisée en utilisant la formule quadratique, mais j'obtiens une erreur sur la partie où je commence à faire des maths. Il semble qu'il y ait un problème avec les flotteurs que j'utilise, mais je ne sais pas pourquoi, et je ne sais pas comment le réparer.Quel est le problème avec le code d'équation quadratique suivant?

C'est l'erreur que je reçois:

Traceback (most recent call last): 
    File "C:\Users\Josef\Documents\Python\standardFactored.py", line 25, in <module> 
    rightS = b^2-4*a*c 
TypeError: unsupported operand type(s) for ^: 'float' and 'float' 

Voici le code:

print("This program will convert standard form quadratic equations to " 
     "factored form. ax^2+bx+c --> a(x+)(x+)") 

while True: 
    try: 
     a = float(raw_input("a = ")) 
     break 
    except: 
     print("that is not a valid number") 

while True: 
    try: 
     b = float(raw_input("b = ")) 
     break 
    except: 
     print("that is not a valid number") 

while True: 
    try: 
     c = float(raw_input("c = ")) 
     break 
    except: 
     print("that is not a valid number") 

rightS = b^2-4*a*c 
try: 
    math.sqrt(rightS) 
except: 
    ("There is no factored for for this equation") 
    quit() 
+1

L'opérateur "^" ne fait pas ce que vous pensez.^est appelé exclusif ou. Vous voulez utiliser ** pour l'exponentiation (b ** 2). – pushkin

Répondre

2

L'opérateur ne ^ probablement pas ce que vous attendez. C'est un XOR binaire, ou e X clusive ou. L'opérateur XOR ne fonctionne pas avec des nombres à virgule flottante, ce qui génère l'erreur. L'erreur dit essentiellement qu'il ne peut pas faire l'opération sur deux flotteurs. Avec les exposants, utilisez un astérisque double. Voir les opérateurs Python here.

exemple, a à la puissance b est:

a ** b 

Dans votre cas, ce serait:

rightS = b ** 2 - 4 * a * c 
+0

Ça a marché, merci! –

+0

Pas de problème @JosefBuchko! – Li357