Casting E Conversione Di Tipi
Casting e Conversione di Tipi¶
Obiettivi della Lezione¶
Alla fine di questa lezione, sarai in grado di:
- Comprendere il concetto di casting e perché è utile in Python.
- Utilizzare le funzioni di conversione di tipo predefinite in Python.
- Convertire tra tipi di dati comuni come interi, float, stringhe e booleani.
- Riconoscere le potenziali problematiche legate alla conversione di tipi e come evitarle.
Introduzione¶
In Python, ogni valore ha un tipo di dato associato, come interi, float, stringhe e così via. A volte, durante la scrittura del codice, è necessario convertire un valore da un tipo a un altro. Questo processo è noto come casting o conversione di tipi. Capire come e quando effettuare il casting è fondamentale per evitare errori e garantire che il programma funzioni correttamente.
Spiegazione Teorica¶
Perché il Casting è Importante?¶
Il casting consente di trasformare un valore da un tipo di dato a un altro. Questo è utile quando:
- Interazione con l’utente: l’input dell’utente è sempre una stringa, quindi potrebbe essere necessario convertirlo in un numero per effettuare calcoli.
- Operazioni matematiche: per eseguire operazioni tra diversi tipi numerici, potrebbe essere necessario convertirli allo stesso tipo.
- Formattazione dei dati: per concatenare numeri all’interno di stringhe, è necessario convertire i numeri in stringhe.
Conversione Implicita vs Esplicita¶
Conversione Implicita: Python a volte converte automaticamente un tipo di dato in un altro. Ad esempio, quando si somma un intero con un float, il risultato sarà un float.
x = 5 # intero y = 2.5 # float z = x + y # z sarà 7.5, un float
Conversione Esplicita: Richiede l’uso di funzioni per convertire un tipo di dato in un altro.
Funzioni di Conversione di Tipo¶
Python fornisce diverse funzioni per convertire tipi di dati:
int(x)
: Convertex
in un intero.float(x)
: Convertex
in un float.str(x)
: Convertex
in una stringa.bool(x)
: Convertex
in un booleano.list(x)
: Convertex
in una lista.tuple(x)
: Convertex
in una tupla.set(x)
: Convertex
in un set.
numero_input = input("Inserisci un numero: ")
print(type(numero_input)) # <class 'str'>
# Conversione in intero
numero = int(numero_input)
print(type(numero)) # <class 'int'>
# Utilizzo in un calcolo
somma = numero + 10
print("La somma è:", somma)
Inserisci un numero: 5 <class 'str'> <class 'int'> La somma è: 15
Convertire un Intero in una Stringa¶
Per concatenare un numero a una stringa:
eta = 25
messaggio = "Ho " + str(eta) + " anni."
print(messaggio)
Ho 25 anni.
Convertire un Float in un Intero¶
Attenzione: si perde la parte decimale.
prezzo = 49.99
prezzo_intero = int(prezzo)
print(prezzo_intero) # Output: 49
49
Utilizzare float()
per Calcoli Precisi¶
dividendo = 5
divisore = 2
risultato = dividendo / divisore
print(risultato) # Output: 2.5
# Se vogliamo ottenere un intero
risultato_intero = int(risultato)
print(risultato_intero) # Output: 2
2.5 2
Conversione a Booleano¶
Qualsiasi valore può essere convertito in booleano.
print(bool(0)) # Output: False
print(bool(1)) # Output: True
print(bool("")) # Output: False
print(bool("Python")) # Output: True
False True False True
Esercizi Interattivi¶
Esercizio 1: Scrivi un programma che chiede all’utente due numeri, li converte in float e ne calcola la media.
# Scrivi il tuo codice qui
Esercizio 2: Dato il seguente dizionario, converti le chiavi in una lista e stampala.
studente = {"nome": "Luca", "età": 21, "corso": "Informatica"} # Scrivi il tuo codice qui
Esercizio 3: Prendi una lista di numeri come input (esempio: “1,2,3,4”), separali e convertili in una lista di interi.
# Scrivi il tuo codice qui
Buone Pratiche e Consigli¶
Validare sempre l’input: Prima di convertire un input, assicurati che sia nel formato corretto per evitare errori di runtime.
valore = input("Inserisci un numero: ") if valore.isdigit(): numero = int(valore) else: print("Per favore, inserisci un numero valido.")
Attenzione alle conversioni pericolose: Convertire un float in un intero tronca la parte decimale senza arrotondare. Utilizza
round()
se necessario.numero = 5.7 intero = int(numero) # Output: 5 arrotondato = round(numero) # Output: 6
Comprendere il contesto: Non tutte le conversioni hanno senso in ogni contesto. Ad esempio, convertire una stringa non numerica in un intero genererà un errore.
Utilizzare le eccezioni per gestire errori: Puoi usare
try...except
per gestire conversioni potenzialmente problematiche.try: numero = int(input("Inserisci un numero: ")) except ValueError: print("Input non valido. Per favore, inserisci un numero intero.")
Conclusione¶
La comprensione del casting e della conversione di tipi è fondamentale per scrivere codice Python efficace e privo di errori. Saper convertire correttamente i dati ti permette di manipolarli secondo le necessità del tuo programma, garantendo al contempo la robustezza del tuo codice.
Risorse Aggiuntive¶
- Documentazione Ufficiale Python: Standard Types
- Libro Consigliato: Python Crash Course di Eric Matthes
- Video Tutorial: Type casting in Python is easy