Topic: Errore Programma Python  (Letto 65 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline cext104

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Errore Programma Python
« il: Luglio 26, 2020, 21:27 »
Salve a tutti!
Sto uscendo pazzo, perché non riesco a capire dove sbaglio in questo programma..
Quando entro nel caso 'Non ideale' e seleziono il modello di Van Laar ad esempio, mi da errore dicendo "ZeroDivisionError: float division by zero", solo che non capisco dove sbaglio. Le formule credo siano scritte bene perché le ho controllate molte volte.. spero qualcuno di voi possa aiutarmi.
Vi allego il codice sotto:

import math
import time

def inizializzazione():

    global P,y1,A1,B1,C1,A2,B2,C2,A12,A21,y2,T1s,T2s,T,y_1,y_2,x1,x2,p,h,P1s,P2s
    P = float(input("Inserisci la Pressione: "))
    while True:
        y1 = float(input("Inserisci composizione y1: "))
        if y1>=0 and y1<=1:
            break
        else:
            print("La composizione deve variare tra 0 e 1!")
    A1 = float(input("Inserisci coefficiente di Antoine A per il primo componente: "))
    B1 = float(input("Inserisci coefficiente di Antoine B per il primo componente: "))
    C1 = float(input("Inserisci coefficiente di Antoine C per il primo componente: "))
    A2 = float(input("Inserisci coefficiente di Antoine A per il secondo componente: "))
    B2 = float(input("Inserisci coefficiente di Antoine B per il secondo componente: "))
    C2 = float(input("Inserisci coefficiente di Antoine C per il secondo componente: "))
    A12 = float(input("Inserisci coefficiente A12: "))
    A21 = float(input("Inserisci coefficiente A21: "))



    y2 = 1 - y1
    T1s = (B1/(A1-math.log(P,2.718))-C1)
    T2s = (B2/(A2-math.log(P,2.718))-C2)
    T = y1 * T1s + y2 * T2s
    y_1 = 1
    y_2 = 1
    x1 = 0
    x2 = 0
    p = 0
    h = 0
    P1s = 0
    P2s = 0

def ideale():
    i = 0
    global P1s,P2s,x1,x2,T,y1,y_1,y2,y_2,A1,B1,C1,A2,B2,C2

    while i<30:
        P1s = math.exp(A1-(B1/(C1+T)))
        P2s = math.exp(A2-(B2/(C2+T)))
        x1 = (P*y1)/(P1s)
        x2 = 1-x1
        P1s = P*((y1/y_1)+(y2/y_2)*(P1s/P2s))
        T = (B1/(A1-math.log(P1s,2.718))-C1)
        i = i+1
    print("La dew T è: ", T)
    print("La composizione di rugiada x1 è :", x1)


def nonideale(selettore):

    global P1s, P2s, x1, x2, T, y1, y_1, y2, y_2, A1, B1, C1, A2, B2, C2, A12, A21, P
    i = 0



    while i<30:
        if (selettore == "1"):
            y_1 = math.exp(pow((A12 / (1 + ((A12 * x1) / (A21 * x2)))), 2))

            y_2 = math.exp(pow(A21 / (1 + ((A21 * x2) / (A12 * x1))), 2))

        if (selettore == "2"):
            y_1 = math.exp(pow((x2), 2)) * (A12 + 2 * (A12 - A21) * x1)

            y_2 = math.exp(pow((x1), 2)) * (A21 + 2 * (A12 - A21) * x2)


    P1s = math.exp(A1 - (B1 / (C1 + T)))
    P2s = math.exp(A2 - (B2 / (C2 + T)))
    T = (B1/(A1 - math.log(P1s,2.718))-C1)

    x1 = (P*y1)/(P1s*y_1)
    x2 = 1 - x1
    P1s = P * ((y1/y_1)+(y2/y_2)*(P1s/P2s))

    i = i + 1



    print("La dew T è: ", T)
    print("La composizione di rugiada x1 è: ", x1)


inizializzazione()
z=input("Ideale: 0\nNon ideale: 1\n")
if(z=="0"):
    ideale()
else:
    x=(input("Quale modello vuoi utilizzare? \n Van Laar: 1 \n Margules: 2 \n"))
    nonideale(x)


time.sleep(2000)


Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 258
  • Punti reputazione: 0
    • Mostra profilo
Re:Errore Programma Python
« Risposta #1 il: Luglio 27, 2020, 08:08 »
...
Sto uscendo pazzo, perché non riesco a capire dove sbaglio in questo programma.. ...

In inizializzazione :

    x1 = 0
    x2 = 0

Tali valori non vengono "variati" dall'input, nel caso "Van Laar (1)" hai :
... (A12 * x1) / (A21 * x2) ...

"A21 * 0 = 0" , quindi stai tentando di dividere un numero per Zero ... non è che un programma sottilizzi sul fatto che, in effetti, stai facendo "zero diviso zero" ;)

P.S. Ben venuto :)

Offline cext104

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Errore Programma Python
« Risposta #2 il: Luglio 27, 2020, 09:38 »
Grazie mille per la risposta, ma se non inizializzo la variabile x1 ad esempio, quando va a fare il calcolo mi dice che non riconosce x1

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 258
  • Punti reputazione: 0
    • Mostra profilo
Re:Errore Programma Python
« Risposta #3 il: Luglio 27, 2020, 10:44 »
Grazie mille per la risposta, ma se non inizializzo la variabile x1 ad esempio, quando va a fare il calcolo mi dice che non riconosce x1

La qual cosa non esclude che avresti ugualmente errore per utilizzo di variabile non definita
>>> print(a)
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    print(a)
NameError: name 'a' is not defined
>>>

Devi tener presente le possibili casistiche di insussistenza e prevederle nell'algoritmo da applicare, le operazioni così come da Te poste non funzionerebbero nemmeno in caso di calcolo manuale in caso delle x non definite o nulle.

Offline cext104

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Errore Programma Python
« Risposta #4 il: Luglio 27, 2020, 11:20 »
Vabene allora cerco di studiarlo e impostarlo meglio, per poterlo rendere funzionale al 100%