04. Conversioni tra tipi di dato, funzioni print e input

In questa lezione parleremo di conversioni tra tipi diversi di dato e di due funzioni integrate in Python molto utilizzate, la funzione print() e la funzione input().

Concluderemo inoltre la lezione scrivendo il nostro primo programma su Visual Studio Code!


Conversioni tra tipi di dato in Python

Finora abbiamo introdotto tre tipi di dato: integer, float e string: non abbiamo però spiegato come fare a 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 age (età) e assegniamole un numero intero:

>>> age = 30

Definiamo ora un'altra variabile e assegniamole una stringa:

>>> text = "La mia età è: "

Proviamo ora a combinare age e testo e vediamo cosa succede!

>>> text + age

# output
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    text + age
TypeError: can only concatenate str (not "int") to str

Ecco che, come forse alcuni di voi avranno sospettato, Python 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 valore in stringa ad esempio, usiamo la funzione str().

Come capita spesso con le funzioni, come vedremo più avanti nel corso, le passiamo quello un parametro tra parentesi, e nel nostro caso il parametro sarà la variabile age:

>>> testo + str(age)

# output
'La mia età è... 30'

Analizziamo ora il caso opposto, ovvero il caso in cui abbiamo una stringa composta solo da caratteri numerici, e vogliamo convertirla in numero intero per usarla così in dei calcoli matematici.

Creiamo una variabile chiamata arance_per_sacco e assegniamole una stringa composta da caratteri numerici, in questo caso magari, un 13:

>>> arance_per_sacco = "13"

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

# output
'131313'

Mmm... per quanto buone, centotrentunomila e trecentotredici 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
39

Ed ecco che le arance sono 39!

Attenzione però, perché in questo modo non stiamo cambiando il valore associato alla variabile: sono le funzioni di conversione a restituirci il valore che stiamo poi utilizzando. Qualora dovessimo alterare il valore associato alla variabile dovremmo effettuare nuovamente l'assegnazione:

>>> arance_per_sacco
'13'
>>> type(arance_per_sacco)
<class 'str'>

>>> arance_per_sacco = int(arance_per_sacco)
>>> arance_per_sacco
13
>>> type(arance_per_sacco)
<class 'int'>

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

Volendo convertire la variabile age del primo esempio facciamo:

>>> float(age)
30.0


La funzione print in Python

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 ciò che le passiamo come parametro:

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

# output
'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\nSeconda riga\necc ecc...")

# output
Prima riga
Seconda riga
ecc ecc...

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

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

prima linea
seconda linea
terza linea...

La funzione 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 in Python

La funzione input() invece ci serve per l'inserimento di dati da parte dell'utente, in fase di 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 la funzione integrata type(), anche se abbiamo inserito apparentemente un numero, questo viene assegnato alla variabile sotto forma di stringa!

>>> type(x)
class 'str'


Scriviamo il nostro primo programma Python!

È arrivato ora il momento di scrivere il nostro prima programma!

In questo corso usiamo Visual Studio Code, ma voi potete usare volendo qualsiasi editor testuale.

Vi rimando al video di questa lezione per un commento approfondito del codice qui mostrato!

# il tuo primo programma Python

robot_name = "Chappie"
robot_age = 1

print("Ciao! Il mio nome è " + robot_name + " e ho " + str(robot_age) + " anno")

user_name = input("Tu come ti chiami? ")
print("Ciao " + user_name + "!")

user_age = int(input("Quanti anni hai? "))
age_difference = user_age - robot_age

print(str(user_age) + " anni!? Sono " + str(age_difference) + " più di me!")
print("A presto!")