Equazione di I grado

Vedi la discussione

Segui la tecnica top-down e la suddivisione in sottoproblemi input / elaborazione / output

1

print("ax + b = 0")
 
a = float(input("a = "))  # INPUT
b = float(input("b = "))  # INPUT
 
x = -b/a                  #  ELABORAZIONE
 
print(x)                  # OUTPUT

2

Se a <> 0 …

...

if(a != 0):
    x    = -b/a 
    risp = "x = "+str(x)

if(a == 0):
    risp = "???"

...

3

Con tre selezioni singole è molto semplice (ma poco leggibile e poco efficiente)

...

if(a != 0):
    x    = -b/a 
    risp = "x = "+str(x)

if(a == 0) and (b != 0):
    risp = "Impossibile"

if(a == 0) and (b == 0):
    risp = "Indeterminata"

...

4

Con le selezioni annidate è più aderente al linguaggio naturale e alla discussione matematica

a = float(input("a = "))
b = float(input("b = "))

if(a != 0):
    x    = -b/a 
    risp = "x = "+str(x) 
else:
    if(b != 0):
        risp = "Impossibile"
    else:
        risp = "Indeterminata"

print(risp)

5

Con la selezione multipla è più ordinato

...

if(a != 0):
    x    = -b/a 
    risp = "x = "+str(x) 
elif(b != 0):                # a == 0, b != 0 
    risp = "Impossibile"
else:                        # a == 0, b == 0 
    risp = "Indeterminata"
 
...

fractions

Se i coefficienti dell’equazione sono frazioni anche la soluzione sarà una frazione!

import fractions

a = fractions.Fraction(3, 5) 
b = fractions.Fraction(4, 9)

if(a != 0):
    x    = -b/a
    risp = "x = " + str(x)
else:
    if(b == 0):
        risp = "Indeterminata"
    else:
        risp = "Impossibile"

print(risp)

Output: x = -20/27