Errore richiamo funzione

di il
2 risposte

Errore richiamo funzione

Salve a tutti
In questo periodo sto studiando il linguaggio python e precisamente le funzioni...
Tuttavia ho riscontrato un problema nell'ultimo programma che ho scritto con una semplice funzione che permette di calcolare la distanza fra due punti...
Questo è il programma:

#Calcolo distanza fra due punti 

import math 


print ("Calcolo distanza fra due punti")

x1 = eval(input("Digita ascissa primo punto: "))
y1 = eval(input("Digita coordinata primo punto: "))

x2 = eval(input("Digita ascissa secondo punto: "))
y2 = eval(input("Digita coordinata secondo punto: "))

##richiamo la funzione per il calcolo
risultato = distanza(x1,y1,x2,y2) 

#stampa del risultato
print("Risultato: ",risultato) 



#funzione per il calcolo distanza due punti 
def distanza(x1, y1, x2, y2):
  dx = x2 - x1
  dy = y2 - y1
  DistQuadrata = dx**2 + dy**2
  Risultato = math.sqrt(DistQuadrata)
  return Risultato 


Ecco l'errore...
Traceback (most recent call last):
File "C:\Users\...\distanza_punti_funzioni.py", line 16, in <module>
risultato = distanza(x1,y1,x2,y2)
NameError: name 'distanza' is not defined
Subito ho pensato ai parametri e al nome della funzione ma direi che sono corretti..
Non capisco dov'è dunque l'errore

Spero che qualcuno sappia aiutarmi, grazie in anticipo!

2 Risposte

  • Re: Errore richiamo funzione

    Il problema è molto semplice: il programma viene eseguito dall'alto verso il basso. Nel momento in cui esegui "risultato = distanza(...)", la funzione distanza non è ancora stata definita (infatti compare più in basso), per cui l'interprete python non sa cosa fare.

    Occhio, comunque, ad usare la "eval", perché introduce molti problemi di sicurezza. Per interpretare una stringa come un numero puoi usare le funzioni "int()" e "float()", rispettivamente per numeri interi e decimali
  • Re: Errore richiamo funzione

    Grazie!
    Mettendo la funzione in alto ora il programma funziona correttamente!
Devi accedere o registrarti per scrivere nel forum
2 risposte