Soluzioni di una equazione di secondo grado (con funzioni)

Un classico esercizio per prendere confidenza col Python, il cast di tipi, le funzioni e la libreria math. In allegato trovate il diagramma a blocchi corrispondente. 

La difficoltà o anomalia che possiamo riscontrare è l’utilizzo del cast per obbligare la conversione tra il valore dell’input che restituisce sempre una stringa di testo, anche se inseriamo correttamente un numero, e quello numerico necessario per i conti. La lettura dei parametri in ingresso è affidata alla funzione carica(). Il software poi utilizza un’altra funzione con tre parametri per calcolare il delta.

Nel main procediamo ad assemblare il tutto. Una caratteristica interessante del Python che lo rende più smart degli altri linguaggi ad oggetti? La possibilità di tornare un vettore di elementi qualsiasi e piazzare il risultato in altrettante variabili, senza scomodare un oggetto vero e proprio, superando il limite di C++ o Java che restituiscono un solo parametro a funzione o un vettore mono-tipo. Lo possiamo osservare con la funzione carica nel main.

'''
Calcoliamo una classica equazione di secondo grado
'''
import math

def carica():
    rawa = input("Inserisci a: ")
    a= float(rawa)

    rawb = input("Inserisci b: ")
    b= float(rawb)

    rawc = input("Inserisci c: ")
    c= float(rawc)
    return [a,b,c]

def delta(a,b,c):
    d= ((b*b) - (4*a*c))
    return d

if __name__=="__main__":
    [a,b,c] = carica()

    if a == 0:
        if b == 0 :
            print ("L'eq. non ha soluzione")

        else:
            x = -(b/c)
            print ("La soluzione x="+ str(x))
    else:
        d = delta(a,b,c)
        if d >= 0:
            x1 = (-b -math.sqrt(d))/(2*a)
            x2 = (-b +math.sqrt(d))/(2*a)
            print ("Soluzione x1="+str(x1) + " Soluzione x2="+str(x2))
        else:
            print("Delta zero, non ci sono soluzioni")

Ultima modifica 18 Ottobre 2023