PDA

View Full Version : [Python] Funzioni in Python 2 e 3


21-5-73
01-10-2011, 17:24
Ciao, ho una semplicissima funzione in Python 2 che non và con il 3. Stò cercando di capire cosa cambia tra le due versioni (sono alle primissime armi e non era previsto di usare Python). Ho letto la documentazione ufficiale ma gli esempi proposti sono lontani dalla semplicità della mia funzione. Sò che print nel 3 è diventata una funzione e quindi rispetto all' esempio che allego devo aggiungere un paio di parentesi, però il problema non è lì. Se serve posto l' errore ottenuto. Funzione:

def areaRettangolo(base, altezza):
area = base * altezza
return area

base = input("Inserisci la base del rettangolo ")
altezza = input("Inserisci l'altezza del rettangolo ")

print areaRettangolo(base, altezza)

cdimauro
01-10-2011, 18:04
In Python 2 erano presenti due funzioni, input e raw_input; la prima che prelevava l'input dell'utente, e lo valutavava (es: mettendo "10" input restituiva l'intero 10, mettendo "10.0" il float 10.0, ecc.; esattamente se si trattasse di un'espressione Python digitata nell'interprete interattivo) mentre la seconda che torna l'input dell'utente così com'è.

In Python 3 la input è scomparsa, mentre raw_input è stata chiamata input.

Quindi se vuoi scrivere quel codice in modo che sia compatibile con entrambe le versioni di Python, devi fare così:
try:
input = raw_input # OK in Python 2: input diventa uguale a raw_input
except:
pass # Python 3 non ha raw_input, per cui input funziona già come vorremmo

def areaRettangolo(base, altezza):
area = int(base) * int(altezza)
return area

base = input("Inserisci la base del rettangolo ")
altezza = input("Inserisci l'altezza del rettangolo ")

print (areaRettangolo(base, altezza))

21-5-73
01-10-2011, 20:36
Ciao, ti ringrazio per l' aiuto, aiutandomi con l' errore generato avevo anche io provato anteponendo int ai due parametri da moltiplicare, ma inspiegabilmente non andava. Ora funziona bho.