Affronta il problema con metodologia top-down
1
import math
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
x1 = (-b-math.sqrt(b**2-4*a*c)) / (2*a)
x2 = (-b+math.sqrt(b**2-4*a*c)) / (2*a)
print("x1 =", x1)
print("x2 =", x2)
2
Se il discriminante è positivo / nullo / negativo allora..
...
delta = b*b-4*a*c
if(delta >= 0):
x1 = (-b-math.sqrt(delta))/(2*a)
x2 = (-b+math.sqrt(delta))/(2*a)
print("x1 =", x1)
print("x2 =", x2)
else:
print("Discriminante negativo.")
3
Con selezione multipla
...
delta = b*b-4*a*c
if(delta > 0):
x1 = (-b-math.sqrt(delta))/(2*a)
x2 = (-b+math.sqrt(delta))/(2*a)
print("x1 =", x1)
print("x2 =", x2)
elif(delta == 0):
x = -b/(2*a)
print("x1 = x2 =", x)
else:
print("Discriminante negativo.")
4
Se il coefficiente a è nullo allora si tratta di una equazione di primo grado
...
if(a == 0):
print("Equazione di I grado")
else:
...
...
5
Tutti i casi
- di primo grado
- una radice
- infinite radici
- nessuna radice
- di secondo grado
- 2 radici (reali distinte)
- una radice (2 radici reali coincidenti)
- 2 radici complesse (coniugate)
import math
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
if(a == 0): # bx + c = 0
if(b != 0):
x = -c/b
print("x =", x)
elif(c == 0):
print("Indeterminata")
else:
print("Impossibile")
else: # ax^2 + bx + c = 0
delta = b*b-4*a*c
if(delta > 0):
x1 = (-b-math.sqrt(delta)) / (2*a)
x2 = (-b+math.sqrt(delta)) / (2*a)
print("x1 =", x1)
print("x2 =", x2)
elif(delta == 0):
x = -b/(2*a)
print("x =", x)
else:
re = -b/(2*a)
im = math.sqrt(-delta) / (2*a)
x1 = complex(re, im)
x2 = complex(re, -im)
print("x1 =", x1)
print("x2 =", x2)