Risolutore equazioni di primo grado:

di il
1 risposte

Risolutore equazioni di primo grado:

Salve a tutti, sto cercando di realizzare un programma che risolva equazioni. Questa è la funzione che dovrebbe risolvere quelle di primo grado:

def Risolvi1():
    # Inizio acquisizione elementi di primo grado primo membro
    print("PRIMO MEMBRO:")
    print("Inserire i coefficienti degli elementi di primo grado (Premi invio ogni volta e concludi scrivendo 'fine')")
    a=input()
    if a!='fine':
       a=float(a)
    coeff1=[a]
    while a != 'fine':
        a = input()
        if a != 'fine':
            a = float(a)
        coeff1.append(a)
    sum1m1g = 0
    for i in coeff1:
        if coeff1[i] != 'fine':
            sum1m1g=sum1m1g+coeff1[i]
    #Inizio acquisizione termini noti primo membro
    print("Inserire i termini noti al primo membro (Premi invio ogni volta e concludi scrivendo 'fine'")
    b=input()
    if b!='fine':
       b=float(b)
    tnoti1=[b]
    while (b!='fine'):
        b=input()
        if b!='fine':
            b=float(b)
        tnoti1.append(b)
    sumn1=0
    for i in tnoti1:
        if tnoti1[i]!='fine':
         sumn1=sumn1+tnoti1[i]
    #Acquisizione elementi di primo grado secondo membro
    print("")
    print("SECONDO MEMBRO")
    print("Inserire i coefficienti degli elementi di primo grado (Premi invio ogni volta e concludi scrivendo 'fine'")
    c = input()
    if c != 'fine':
        c = float(c)
    coeff2 = [c]
    while (c != 'fine'):
        c = input()
        if c != 'fine':
            c = float(c)
        coeff2.append(c)
    sum2m1g = 0
    for i in coeff2:
        if coeff2[i] != 'fine':
            sum2m1g = sum2m1g + coeff2[i]
    # Inizio acquisizione termini noti primo membro
    print("Inserire i termini noti al primo membro (Premi invio ogni volta e concludi scrivendo 'fine'")
    d = input()
    if d != 'fine':
        d = float(d)
    tnoti2 = [d]
    while (d != 'fine'):
        d = input()
        if d != 'fine':
            d = float(d)
        tnoti2.append(d)
    sumn2 = 0
    for i in tnoti2:
        if tnoti2[i] != 'fine':
            sumn2 = sumn2 + tnoti2[i]

    #Risoluzione dell'equazione:
    return (sumn2-sumn1)/(sum1m1g-sum2m1g)

print("                                          Benvenuto in EquSolver 1.0!")
print("EquSolver permette di risolvere equazioni di primo e secondo grado.")
print("Selezionare il genere di equazione:")
print("1 Equazione di primo grado")
print("2 Equazione di secondo grado")
print("")
tipsel=input()

if tipsel=='1':
    sol = Risolvi1()
    print("La soluzione dell'equazione è ", sol)


Come potete vedere ho deciso di far introdurre i coefficienti in un vettore, che si allunga tramite la funzione append, e ho posto come condizione di uscita che si digiti il comando 'fine'.
Il problema è che quando provo ad eseguire il programma mi viene dato sempre lo stesso errore dopo aver digitato il comando 'fine'.
Ho provato a rileggere più volte il codice ma non trovo l'errore. Qualcuno ha idee?
Grazie in anticipo!

1 Risposte

  • Re: Risolutore equazioni di primo grado:

    Ciao, il problema è in questa riga:
    
    for i in coeff1:
            if coeff1[i] != 'fine':
    
    In particolare, "i" contiene ad ogni iterazione l'n-esimo valore della lista "coeff1", per cui fare "coeff1" non ha senso.

    In generale ti consiglio di semplificare un pochino il codice, perché è abbastanza complicato (e poco leggibile, visto che tutta la logica è in 1 funzione)
Devi accedere o registrarti per scrivere nel forum
1 risposte