View Single Post
Old 15-10-2008, 21:07   #13
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Tornando in topic, aggiungo una cosa che ho appena notato.
Partendo dal presupposto che quando si scrive un’istruzione return nell’idle al momento dell’esecuzione non ritorna nulla (si deve mettere un istruzione di stampa) mentre nella command line non ce n’è bisogno (e poi vorrei capire questa cosa),
Nella command line l'interprete è predisposto per stampare eventuali risultati delle espressioni.

Quindi se scrivi ad esempio 3 * 5 ti stamperà 15.
Quote:
ho notato questo:

Codice:
import math

def DistanzaTraDuePunti(x1,y1,x2,y2):
    dx=x2-x1
    dy=y2-y1
    DistQuadrata=dx**2+dy**2
    Risultato=math.sqrt(DistQuadrata)
    print Risultato
    return Risultato


def AreaCerchio(Raggio):
    math.pi*Raggio**2


def AreaCerchio2(xc,yc,xp,yp):
    Raggio=DistanzaTraDuePunti(xc,yc,xp,yp)
    Risultato=AreaCerchio(Raggio)
    print Risultato
    return Risultato


print AreaCerchio(55)
AreaCerchio2(4,9,7,3)
1)AreaCerchio mi ritorna il valore None
Perché non torni nulla, appunto. In Python affinché una funzione ritorni un valore devi utilizzare sempre l'istruzione return. Quindi così:
Codice:
def AreaCerchio(Raggio):
    return math.pi*Raggio**2
Quote:
2)Se chiamo la funzione AreaCerchio2, mi ritorna il risultato e poi il None
Con quel codice sbagliato deve tornarti None e stampartelo pure a video.
Quote:
3)Se tolgo il print da AreaCerchio2 mi ritorna il valore, ma il None sparisce
Perché viene omesso dalla command line.
Quote:
4)Se metto il print davanti alla chiamata di funzione di AreaCerchio2 mi ritorna il valore e due None
Why??
Il primo None lo stampa perché lo fa AreaCerchio2. Il secondo perché gliel'hai chiesto esplicitamente tu.

Questo perché tu stai usando Python dalla command line, che è una speciale modalità utile per "smanettare", provando al volo pezzi di codice.
Quote:
Comunque per fare un pò di ordine riquoto il mio primo post, togliendo i dubbi ai quali si è già trovato risposta
Troppo tardi, non avevo letto. Ho risposto a tutto.
Quote:
In attesa di risposta, Valerio Staffeli, hwupgrade forum, a voi la linea
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso