|
8 | 8 | "\n", |
9 | 9 | "---\n", |
10 | 10 | "\n", |
11 | | - "In questo capitolo impariamo come intercettare e gestire errori (eccezioni) che si verificano durante l'esecuzione del programma. Una corretta gestione degli errori rende il tuo codice più robusto e affidabile." |
| 11 | + "In questo capitolo si descirve la gestone degli errori (eccezioni) che si verificano durante l'esecuzione del programma. Una corretta gestione degli errori è essenziale per rendere il codice più robusto e affidabile." |
12 | 12 | ] |
13 | 13 | }, |
14 | 14 | { |
|
17 | 17 | "source": [ |
18 | 18 | "## 1. Tipi di errori comuni\n", |
19 | 19 | "\n", |
20 | | - "Gli errori, o **eccezioni**, si verificano quando Python non può eseguire un'operazione. Se non gestite, interrompono l'esecuzione del programma. Vediamo alcuni dei tipi più comuni:\n", |
| 20 | + "Gli errori, o **eccezioni**, si verificano quando Python non può eseguire un'operazione. Se non gestite, interrompono l'esecuzione del programma. Qui sono riportati alcunu esempi delle eccezioni più comuni:\n", |
21 | 21 | "\n", |
22 | 22 | "- `SyntaxError`: Errore di sintassi, come una parentesi mancante. Non può essere gestito con `try/except`.\n", |
23 | 23 | "- `TypeError`: Errore di tipo, ad esempio, quando si cerca di sommare un numero a una stringa.\n", |
|
101 | 101 | "try:\n", |
102 | 102 | " # Try to convert the input into an integer\n", |
103 | 103 | " number = int(input(\"Enter a number: \"))\n", |
104 | | - " \n", |
105 | | - " # Try to perform a division\n", |
106 | 104 | " result = 10 / number\n", |
107 | 105 | "except ValueError:\n", |
108 | 106 | " print(\"Error: Enter a valid int.\")\n", |
|
122 | 120 | "source": [ |
123 | 121 | "## 5. Best practice per gestire gli errori\n", |
124 | 122 | "\n", |
125 | | - "- Usa `try/except` solo quando serve: non coprire tutto il codice, ma solo le parti che possono davvero fallire.\n", |
| 123 | + "- Usa `try/except` solo quando serve.\n", |
126 | 124 | "- Specifica l'eccezione giusta (es. `ValueError`) invece di usare sempre `except Exception`.\n", |
127 | 125 | "- Aggiungi messaggi chiari per l'utente.\n", |
128 | | - "- Usa `finally` per chiudere file o connessioni, anche in caso di errore.\n", |
| 126 | + "- Usa `finally` per chiudere risorse, anche in caso di errore.\n", |
129 | 127 | "\n", |
130 | 128 | "```python\n", |
131 | 129 | "try:\n", |
|
147 | 145 | "---" |
148 | 146 | ] |
149 | 147 | }, |
150 | | - { |
151 | | - "cell_type": "markdown", |
152 | | - "metadata": {}, |
153 | | - "source": [ |
154 | | - "### Esercizio 1: Divisione sicura\n", |
155 | | - "Scrivi un programma che chiede due numeri e li divide. Gestisci sia l'errore di **divisione per zero** (`ZeroDivisionError`) che l'input non numerico (`ValueError`)." |
156 | | - ] |
157 | | - }, |
158 | | - { |
159 | | - "cell_type": "markdown", |
160 | | - "metadata": {}, |
161 | | - "source": [ |
162 | | - "### Esercizio 2: Accesso alla lista\n", |
163 | | - "Crea una lista con alcuni elementi. Chiedi all'utente di inserire un indice e stampa l'elemento corrispondente. Gestisci gli errori `IndexError` (se l'indice è fuori range) e `ValueError` (se l'input non è un numero intero)." |
164 | | - ] |
165 | | - }, |
166 | | - { |
167 | | - "cell_type": "markdown", |
168 | | - "metadata": {}, |
169 | | - "source": [ |
170 | | - "### Esercizio 3: Converti in int\n", |
171 | | - "Chiedi all'utente di inserire un numero. Usa un blocco `try` per gestire il caso in cui inserisce un testo che non può essere convertito in numero intero. Se la conversione ha successo, stampa il numero, altrimenti stampa un messaggio di errore." |
172 | | - ] |
173 | | - }, |
174 | | - { |
175 | | - "cell_type": "markdown", |
176 | | - "metadata": {}, |
177 | | - "source": [ |
178 | | - "## Soluzioni\n", |
179 | | - "\n", |
180 | | - "---" |
181 | | - ] |
182 | | - }, |
183 | 148 | { |
184 | 149 | "cell_type": "markdown", |
185 | 150 | "metadata": {}, |
|
219 | 184 | "source": [ |
220 | 185 | "fruits = ['apple', 'banana', 'kiwi']\n", |
221 | 186 | "try:\n", |
222 | | - " fruits_index = int(input(f\"Enter an index (from 0 to {len(fruits) - 1}): \"))\n", |
| 187 | + " index = int(input(f\"Enter an index (0-{len(fruits)-1}): \"))\n", |
223 | 188 | " print(f\"Element at index {index} is: {fruits[index]}\")\n", |
224 | 189 | "except ValueError:\n", |
225 | 190 | " print(\"Error: Input is not an int.\")\n", |
226 | 191 | "except IndexError:\n", |
227 | | - " print(f\"Error: Index if out of range (0-{len(fruits) - 1}).\")" |
| 192 | + " print(f\"Error: Index out of range (0-{len(fruits)-1}).\")" |
228 | 193 | ] |
229 | 194 | }, |
230 | 195 | { |
|
245 | 210 | " number_int = int(number_str)\n", |
246 | 211 | " print(f\"Int is: {number_int}\")\n", |
247 | 212 | "except ValueError:\n", |
248 | | - " print(f\"Error: \\\"{number_str}\\\" is not a valid int.\")" |
| 213 | + " print(f\"Error: '{number_str}' is not a valid int.\")" |
249 | 214 | ] |
250 | 215 | }, |
251 | | - { |
252 | | - "cell_type": "markdown", |
253 | | - "id": "footer", |
254 | | - "metadata": {}, |
255 | | - "source": [ |
256 | | - "© 2025 Hanamai. All rights reserved. | Built with precision for real-time data streaming excellence." |
257 | | - ] |
258 | | - } |
259 | | - ], |
| 216 | + { |
| 217 | + "cell_type": "markdown", |
| 218 | + "id": "footer", |
| 219 | + "metadata": {}, |
| 220 | + "source": [ |
| 221 | + "© 2025 Hanamai. All rights reserved. | Built with precision for real-time data streaming excellence." |
| 222 | + ] |
| 223 | + } |
| 224 | + ], |
260 | 225 | "metadata": { |
261 | 226 | "kernelspec": { |
262 | 227 | "name": "python3", |
|
0 commit comments