Tipi Di Dati In Python
Tipi di Dati in Python¶
Obiettivi della Lezione¶
Al termine di questa lezione, sarai in grado di:
- Comprendere i diversi tipi di dati disponibili in Python.
- Dichiarare e utilizzare variabili con tipi di dati appropriati.
- Manipolare i tipi di dati per risolvere problemi pratici.
- Distinguere tra tipi di dati mutabili e immutabili.
- Eseguire conversioni di tipo tra diversi tipi di dati.
Introduzione¶
In Python, i tipi di dati sono fondamentali per la gestione e la manipolazione delle informazioni. Ogni valore memorizzato in una variabile ha un tipo di dato specifico che determina le operazioni possibili su di esso. Comprendere i tipi di dati disponibili è essenziale per scrivere codice efficiente e per evitare errori logici nel programma.
Spiegazione Teorica¶
Python offre una varietà di tipi di dati integrati. I principali tipi di dati che esamineremo sono:
1. Numeri¶
I tipi numerici in Python includono:
- Interi (
int
): numeri interi, positivi o negativi, senza parte decimale.x = 5 y = -3
- Virgola Mobile (
float
): numeri con parte decimale.pi = 3.14 temperatura = -10.5
- Complessi (
complex
): numeri con parte reale e parte immaginaria.numero_complesso = 2 + 3j
2. Booleani¶
Il tipo booleano ha due valori possibili:
True
(Vero)False
(Falso)
Sono usati per rappresentare valori di verità e sono fondamentali nelle strutture di controllo.
is_active = True
is_admin = False
3. Stringhe¶
Le stringhe sono sequenze di caratteri utilizzate per rappresentare testi.
- Possono essere delimitate da apici singoli
'...'
o doppi"..."
. - Sono immutabili: una volta create, non possono essere modificate.
nome = "Alice"
saluto = 'Ciao, mondo!'
4. Liste¶
Le liste sono collezioni ordinate e mutabili di elementi.
- Definite con parentesi quadre
[...]
. - Possono contenere elementi di qualsiasi tipo.
- Supportano operazioni come aggiunta, rimozione e ordinamento.
numeri = [1, 2, 3, 4]
misto = [1, "due", 3.0]
5. Tuple¶
Le tuple sono simili alle liste, ma sono immutabili.
- Definite con parentesi tonde
(...)
. - Una volta create, non possono essere modificate.
coordinate = (10.0, 20.0)
6. Set¶
I set sono collezioni non ordinate di elementi unici.
- Definiti con parentesi graffe
{...}
o con la funzioneset()
. - Utili per eliminare duplicati e per operazioni insiemistiche.
frutti = {"mela", "banana", "arancia"}
7. Dizionari¶
I dizionari sono collezioni non ordinate di coppie chiave-valore.
- Definiti con parentesi graffe
{chiave: valore}
. - Le chiavi devono essere immutabili; le stringhe sono comunemente usate.
studente = {"nome": "Luca", "età": 21, "matricola": 12345}
# Interi
a = 10
b = 3
somma = a + b
print(somma) # Output: 13
# Virgola Mobile
c = 5.5
d = 2.5
divisione = c / d
print(divisione) # Output: 2.2
# Numeri Complessi
e = 1 + 2j
f = 3 + 4j
somma_complessa = e + f
print(somma_complessa) # Output: (4+6j)
13 2.2 (4+6j)
2. Operazioni con i Booleani¶
is_student = True
is_employed = False
# Operatore logico AND
print(is_student and is_employed) # Output: False
# Operatore logico OR
print(is_student or is_employed) # Output: True
False True
3. Manipolazione delle Stringhe¶
# Concatenazione
nome = "Giulia"
cognome = "Rossi"
nome_completo = nome + " " + cognome
print(nome_completo) # Output: Giulia Rossi
# Indicizzazione
prima_lettera = nome[0]
print(prima_lettera) # Output: G
# Slicing
prime_tre_lettere = nome[:3]
print(prime_tre_lettere) # Output: Giu
# Metodi delle stringhe
frase = " Python è fantastico! "
print(frase.strip()) # Rimuove gli spazi: "Python è fantastico!"
print(frase.upper()) # Maiuscolo: " PYTHON È FANTASTICO! "
print(frase.replace("è", "e")) # Sostituzione: " Python e fantastico! "
Giulia Rossi G Giu Python è fantastico! PYTHON È FANTASTICO! Python e fantastico!
4. Lavorare con le Liste¶
# Creazione di una lista
animali = ["gatto", "coniglio", "cane"]
print(animali) # Output: ['cane', 'gatto', 'coniglio']
# Aggiungere un elemento
animali.append("tartaruga")
print(animali) # Output: ['cane', 'gatto', 'coniglio', 'tartaruga']
# Rimuovere un elemento
animali.remove("gatto")
print(animali) # Output: ['cane', 'coniglio', 'tartaruga']
# Ordinare la lista
animali.sort()
print(animali) # Output: ['cane', 'coniglio', 'tartaruga']
# Accedere agli elementi
primo_animale = animali[0]
print(primo_animale) # Output: 'cane'
['gatto', 'coniglio', 'cane'] ['gatto', 'coniglio', 'cane', 'tartaruga'] ['coniglio', 'cane', 'tartaruga'] ['cane', 'coniglio', 'tartaruga'] cane
5. Utilizzo delle Tuple¶
# Creazione di una tupla
punti = (0, 0)
print(punti) # Output: (0, 0)
# Accedere agli elementi
x = punti[0]
y = punti[1]
print(f"Coord X: {x}, Coord Y: {y}") # Output: Coord X: 0, Coord Y: 0
# Tentativo di modifica (genera un errore)
# punti[0] = 5 # TypeError: 'tuple' object does not support item assignment
(0, 0) Coord X: 0, Coord Y: 0
6. Operazioni con i Set¶
# Creazione di un set
numeri = {1, 2, 3, 4}
print(numeri) # Output: {1, 2, 3, 4}
# Aggiungere un elemento
numeri.add(5)
print(numeri) # Output: {1, 2, 3, 4, 5}
# Eliminare duplicati da una lista trasformandola in un set
lista_con_duplicati = [1, 2, 2, 3, 4, 4, 5]
set_senza_duplicati = set(lista_con_duplicati)
print(set_senza_duplicati) # Output: {1, 2, 3, 4, 5}
{1, 2, 3, 4} {1, 2, 3, 4, 5} {1, 2, 3, 4, 5}
7. Lavorare con i Dizionari¶
# Creazione di un dizionario
libro = {
"titolo": "Il Signore degli Anelli",
"autore": "J.R.R. Tolkien",
"anno": 1954
}
print(libro)
# Accedere ai valori
print(libro["titolo"]) # Output: Il Signore degli Anelli
# Modificare un valore
libro["anno"] = 1955
print(libro["anno"]) # Output: 1955
# Aggiungere una nuova coppia chiave-valore
libro["genere"] = "Fantasy"
print(libro)
{'titolo': 'Il Signore degli Anelli', 'autore': 'J.R.R. Tolkien', 'anno': 1954} Il Signore degli Anelli 1955 {'titolo': 'Il Signore degli Anelli', 'autore': 'J.R.R. Tolkien', 'anno': 1955, 'genere': 'Fantasy'}
# Input dell'utente
num1 = float(input("Inserisci il primo numero: "))
num2 = float(input("Inserisci il secondo numero: "))
# Operazioni aritmetiche
somma = num1 + num2
differenza = num1 - num2
prodotto = num1 * num2
quoziente = num1 / num2
# Risultati
print(f"Somma: {somma}")
print(f"Differenza: {differenza}")
print(f"Prodotto: {prodotto}")
print(f"Quoziente: {quoziente}")
Inserisci il primo numero: 8 Inserisci il secondo numero: 2 Somma: 10.0 Differenza: 6.0 Prodotto: 16.0 Quoziente: 4.0
</details>
Esercizio 2: Gestione di una Lista della Spesa¶
Crea una lista chiamata spesa
con gli elementi 'pane'
, 'latte'
e 'uova'
. Aggiungi 'frutta'
alla lista e poi rimuovi 'latte'
. Infine, ordina la lista alfabeticamente e stampala.
Soluzione
spesa = ['pane', 'latte', 'uova']
spesa.append('frutta')
spesa.remove('latte')
spesa.sort()
print(spesa) # Output: ['frutta', 'pane', 'uova']
['frutta', 'pane', 'uova']
</details>
Esercizio 3: Controllo di Presenza in un Set¶
Data una lista di numeri con possibili duplicati, crea un set per eliminare i duplicati e controlla se un determinato numero è presente nel set.
Soluzione
lista_numeri = [1, 2, 2, 3, 4, 4, 5]
set_numeri = set(lista_numeri)
numero_da_controllare = 3
if numero_da_controllare in set_numeri:
print(f"Il numero {numero_da_controllare} è presente nel set.")
else:
print(f"Il numero {numero_da_controllare} non è presente nel set.")
Il numero 3 è presente nel set.
Esercizio 4: Dizionario dei Contatti¶
Crea un dizionario chiamato contatti
che memorizzi nomi e numeri di telefono. Aggiungi almeno tre contatti e poi stampa il numero di telefono di uno specifico contatto.
Soluzione
contatti = {
"Luca": "333-1234567",
"Maria": "345-7654321",
"Giulio": "320-1122334"
}
print(contatti["Maria"]) # Output: 345-7654321
345-7654321
Buone Pratiche e Consigli¶
Usa tipi di dati appropriati: Scegli il tipo di dato che meglio rappresenta l’informazione che stai gestendo. Ad esempio, utilizza una lista se hai bisogno di una sequenza ordinata e modificabile di elementi.
Comprendi la mutabilità: Sappi quali tipi di dati sono mutabili (liste, dizionari, set) e quali sono immutabili (tuple, stringhe, numeri). Questo influisce su come puoi manipolare i dati.
Conversioni di tipo: Utilizza le funzioni di conversione di tipo integrate per convertire tra tipi diversi quando necessario.
numero_str = "42" numero_int = int(numero_str)
Gestione delle chiavi nei dizionari: Quando accedi a valori in un dizionario, puoi utilizzare il metodo
.get()
per evitare errori se la chiave non esiste.valore = dizionario.get("chiave", "Valore predefinito")
Evitare duplicati con i set: Se hai bisogno di una collezione di elementi unici, utilizza i set per rimuovere automaticamente i duplicati.
Conclusione¶
I tipi di dati sono fondamentali per qualsiasi programma in Python. Una solida comprensione di come funzionano ti permette di scrivere codice più efficiente, leggibile e manutenibile. Questa lezione ha coperto i tipi di dati principali in Python, fornendo esempi pratici e esercizi per consolidare l’apprendimento.
Risorse Aggiuntive¶
- Documentazione Ufficiale Python: Tipi di Dati
- Libro Consigliato: Python Crash Course di Eric Matthes
- Video Tutorial: Data Types in Python