You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"In Python, la maggior parte delle strutture dati, come liste, tuple e dizionari, sono **oggetti iterabili**. Un oggetto `iterable` è un contenitore che, quando gli viene richiesto, può produrre un **iteratore**.\n",
257
+
"\n",
258
+
"- Un **Iterable** è un oggetto che sai *puoi* percorrere (es. una lista).\n",
259
+
"- Un **Iteratore** è un oggetto che tiene traccia della tua posizione corrente mentre percorri l'iterable, e sa come passare all'elemento successivo. L'iteratore è il vero e proprio motore del processo di iterazione.\n",
260
+
"\n",
261
+
"### Come funziona il ciclo `for`?\n",
262
+
"Quando scrivi un ciclo `for`, Python fa il lavoro pesante per te. Ad esempio, `for elemento in lista:` esegue questi passaggi:\n",
263
+
"\n",
264
+
"1. Chiama la funzione `iter()` sulla `lista` per ottenere un **iteratore**.\n",
265
+
"2. Ripete la chiamata alla funzione `next()` sull'iteratore per ottenere l'elemento successivo.\n",
266
+
"3. Quando non ci sono più elementi, l'iteratore solleva un'eccezione speciale chiamata `StopIteration`.\n",
267
+
"4. Il ciclo `for` cattura questa eccezione e termina automaticamente, senza sollevare errori per l'utente.\n",
268
+
"\n",
269
+
"Questo meccanismo è la base di ogni ciclo `for` in Python e permette di percorrere qualsiasi tipo di collezione di dati in modo uniforme."
270
+
]
271
+
},
272
+
{
273
+
"cell_type": "markdown",
274
+
"metadata": {},
275
+
"source": [
276
+
"---",
277
+
"\n",
278
+
"## 6. Spacchettare le collezioni: gli operatori `*` e `**`\n",
279
+
"\n",
280
+
"In Python, i caratteri `*` e `**` sono molto utili quando si lavora con le funzioni, specialmente per **spacchettare** (unpacking) il contenuto di collezioni come liste e dizionari, trasformandoli in argomenti singoli.\n",
281
+
"\n",
282
+
"### `*` (asterisco singolo): Spacchettare liste e tuple\n",
283
+
"\n",
284
+
"L'asterisco singolo viene usato per spacchettare elementi di un iterabile (come liste e tuple) e passarli a una funzione come **argomenti posizionali separati**.\n",
"Il doppio asterisco viene usato per spacchettare un dizionario e passare le sue coppie chiave-valore a una funzione come **argomenti nominali (keyword arguments)**.\n",
301
+
"\n",
302
+
"```python\n",
303
+
"def crea_profilo(nome, cognome, eta):\n",
304
+
" print(f\"Creato profilo per {nome} {cognome}, che ha {eta} anni.\")\n",
"# Usando ** per spacchettare il dizionario in argomenti nominali\n",
309
+
"crea_profilo(**dettagli)\n",
310
+
"```\n",
311
+
"\n",
312
+
"Qui, `**dettagli` è come chiamare `crea_profilo(nome='Alice', cognome='Bianchi', eta=25)`.\n"
313
+
]
314
+
},
248
315
{
249
316
"cell_type": "markdown",
250
317
"id": "9197d902",
251
318
"metadata": {},
252
319
"source": [
320
+
"---",
321
+
"\n",
253
322
"## Esercizi\n",
254
323
"\n",
255
324
"---"
@@ -291,11 +360,58 @@
291
360
"Crea un dizionario `studente` con chiavi `nome`, `età` e `corso`. Stampane i valori."
292
361
]
293
362
},
363
+
{
364
+
"cell_type": "markdown",
365
+
"metadata": {},
366
+
"source": [
367
+
"### Esercizio 5: Comprendere gli iteratori\n",
368
+
"Dato l'elenco di colori `colori = ['rosso', 'verde', 'blu']`, simula il comportamento di un ciclo `for`. Ottieni l'iteratore dalla lista usando la funzione `iter()` e, all'interno di un ciclo `while` con un blocco `try-except`, stampa ogni elemento usando `next()`. Gestisci l'eccezione `StopIteration` per terminare il ciclo correttamente."
369
+
]
370
+
},
371
+
{
372
+
"cell_type": "code",
373
+
"execution_count": null,
374
+
"metadata": {},
375
+
"outputs": [],
376
+
"source": []
377
+
},
378
+
{
379
+
"cell_type": "markdown",
380
+
"metadata": {},
381
+
"source": [
382
+
"### Esercizio 6: Spacchettare una lista (*)\n",
383
+
"Data una funzione `somma_tre_numeri(a, b, c)` che calcola la somma di tre numeri, e una lista `numeri = [10, 20, 30]`, usa l'operatore `*` per spacchettare la lista e passare i suoi elementi alla funzione. Stampa il risultato."
384
+
]
385
+
},
386
+
{
387
+
"cell_type": "code",
388
+
"execution_count": null,
389
+
"metadata": {},
390
+
"outputs": [],
391
+
"source": []
392
+
},
393
+
{
394
+
"cell_type": "markdown",
395
+
"metadata": {},
396
+
"source": [
397
+
"### Esercizio 7: Spacchettare un dizionario (**)\n",
398
+
"Data una funzione `registra_utente(username, password)` e un dizionario `credenziali = {'username': 'admin', 'password': 'pass_sicura'}`, usa l'operatore `**` per spacchettare il dizionario e passare le credenziali alla funzione. La funzione dovrebbe stampare un messaggio di conferma."
0 commit comments