Conversioni di Tipo, Print e Input in Python - Programmare in Python

4. Conversioni di Tipo, Print e Input

Benvenuti a questa quarta lezione della serie di lezioni dedicate alle basi di Python 3.

In questo episodio parleremo di conversioni tra tipi diversi di dati e di due delle funzioni integrate in Python più utilizzate, la funzione print() e la funzione input().

Fin'oro abbiamo introdotto tre tipi di dato: Integer, Float e Stringhe: non abbiamo peró spiegato come fare ad combinare questi tipi di dato differenti tra di loro. Come fare ad esempio a combinare un numero intero con una stringa? magari state pensando di utilizzare un operatore come il +, e in questo caso ci siete andati vicini... ma non è così immediato!

Facciamo delle prove. Definiamo una variabile età e assegnamole un numero intero:

>>> età = 24

Definiamo ora un'altra variabile e assegnamole una stringa:

>>> testo = "La mia età è..."

Proviamo ora a combinare età e testo e vediamo cosa succede!

>>> età + testo
Traceback (most recent call last):
  File "stdin", line 1, in 
TypeError: unsupported operand type(s) for +: 'int' and 'str'

ooops!!! come forse alcuni di voi avranno sospettato, la Shell Interattiva ci restituisce un errore.

Python sa che state cercando di effettuare una somma tra tipi di dato diversi, e vi avverte che l'operatore + non è compatibile per somme tra interi e stringhe. In sostanza vi avverte che non puó effettuare la conversione necessaria ad effettuare la somma, a meno che non siate voi a chiederglielo in maniera esplicita.

Come chiedere quindi a Python di effettuare una conversione? Per fare questo esistono delle funzioni integrate che fanno la conversione per noi. Per convertire un intero in stringa usiamo la funzione str() Come per tutte le funzioni, le passiamo quello che viene chiamato parametro tra le parentesi, nel nostro caso il parametro sarà la variabile età:

>>> testo + str(età)
'La mia età è... 24'

Analizziamo ora il caso opposto, ovvero il caso in cui abbiamo una stringa composta solo da simboli numerici, e vogliamo convertirla in numero intero per usarla così in dei calcoli matematici. Creiamo una variabile chiamata arance_per_sacco e assegnamole una stringa composta da caratteri numerici, in questo caso un 27 magari:

>>> arance_per_sacco = "27"

Come fare ora ad ottenere il numero totale di arance presenti in tre sacchi? Guardate cosa succede se proviamo a moltiplicare la variabile per 3:

>>> arance_per_sacco * 3
'272727'

mmm... per quanto buone, duecentosettantaduemilasettecentoventisette arance sono davvero troppe!
La funzione che utilizzeremo in questo caso è, come è possibile immaginare per logica, la funzione int().
Facciamo quindi...

>>> int(arance_per_sacco) * 3
81

Ed ecco svelato il nostro quesito matematico... le arance sono 81!

In maniera molto simile potete ottenere un Float tramite la funzione float().

Volendo convertire la variabile età del primo esempio facciamo:

>>> float(età)
24.0

Bene, è arrivato il momento di introdurre quella che è forse la funzione più famosa nel regno di Python, la funzione print(). Ció che print() fa è mostrarci in output qualsiasi cosa le passiamo...

>>> print(str(33)+ ' trentini entrarono a Trento... passando per la funzione print :) ')
'33 trentini entrarono a Trento... passando per la funzione print :) '

Per andare a capo si utilizza il carattere newline, ovvero \n, in questo modo:

>>> print(' Prima riga \n Seconda riga \n ecc ecc...')
'Prima riga
Seconda riga
ecc ecc...'

Oppure potete direttamente effettuare un print multilinea utilizzando 3 apici, in questo modo:

>>> print("""prima linea
seconda linea
terza linea...""")

prima linea
seconda linea
terza linea...

Print viene usata davvero ovunque, è raro trovare uno script in cui non sia presente almeno una volta.
Faremo degli esempi più complessi man mano che introdurremo nuovi concetti.

La funzione input() invece ci serve per l'inserimento di dati da parte dell'utente in esecuzione: questo ci permette di rendere le cose estremamente interattive; ció che inserirete tramite input() verrà passato a Python sotto forma di stringa.

Ad esempio, definiamo una variabile X ed assegnamole un valore introdotto tramite la funzione input():

>>> x = input()
23

Come possiamo verificare con type(): Definiamo una variabile x ed assegnamole un valore introdotto tramite la funzione input():

>>> type(x)
class 'str'

Anche se abbiamo inserito apparentemente un numero, questo viene assegnato alla variabile sotto forma di stringa!