Skip to content

Commit f21f413

Browse files
committed
version 1.5 - added library re
1 parent f2ef070 commit f21f413

File tree

3 files changed

+113
-3
lines changed

3 files changed

+113
-3
lines changed

08_librerie.ipynb

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,33 @@
334334
"plt.show()"
335335
]
336336
},
337+
{
338+
"cell_type": "markdown",
339+
"metadata": {},
340+
"source": [
341+
"### `re` - Espressioni Regolari\n",
342+
"La libreria **re** fa parte della libreria standard di Python ed è usata per lavorare con le **espressioni regolari**, cioè schemi testuali che permettono di cercare, estrarre e manipolare stringhe in modo molto potente. È utile per compiti come validazione di input, parsing di testo o sostituzioni complesse."
343+
]
344+
},
345+
{
346+
"cell_type": "code",
347+
"execution_count": null,
348+
"metadata": {},
349+
"outputs": [],
350+
"source": [
351+
"import re\n",
352+
"\n",
353+
"text = \"My email is [email protected] and my phone number is 123-456-7890\"\n",
354+
"\n",
355+
"# Find all emails in text\n",
356+
"emails = re.findall(r'[\\w\\.-]+@[\\w\\.-]+', text)\n",
357+
"print(\"Email found:\", emails)\n",
358+
"\n",
359+
"# Replace phone number with *** (masking)\n",
360+
"masked = re.sub(r'\\d', '*', text)\n",
361+
"print(\"New text:\", masked)"
362+
]
363+
},
337364
{
338365
"cell_type": "markdown",
339366
"id": "2dc60fab",
@@ -411,6 +438,29 @@
411438
"---"
412439
]
413440
},
441+
{
442+
"cell_type": "markdown",
443+
"metadata": {},
444+
"source": [
445+
"### Esercizio 4: Analisi di Testo con `re`\n",
446+
"Dato il seguente testo:\n",
447+
"\n",
448+
"```\n",
449+
450+
"```\n",
451+
"\n",
452+
"Usa la libreria `re` per:\n",
453+
"1. Estrarre tutte le email dal testo.\n",
454+
"2. Sostituire i domini delle email con `***.com` (es: `[email protected]` diventa `pyhton@***.ai`)."
455+
]
456+
},
457+
{
458+
"cell_type": "code",
459+
"execution_count": null,
460+
"metadata": {},
461+
"outputs": [],
462+
"source": []
463+
},
414464
{
415465
"cell_type": "markdown",
416466
"id": "353ced40",
@@ -493,6 +543,32 @@
493543
"plt.show()"
494544
]
495545
},
546+
{
547+
"cell_type": "markdown",
548+
"metadata": {},
549+
"source": [
550+
"### Soluzione Esercizio 4: Analisi di Testo con `re`"
551+
]
552+
},
553+
{
554+
"cell_type": "code",
555+
"execution_count": null,
556+
"metadata": {},
557+
"outputs": [],
558+
"source": [
559+
"import re\n",
560+
"\n",
561+
562+
"\n",
563+
"# 1. Extarct all emails\n",
564+
"emails = re.findall(r'[\\w\\.-]+@[\\w\\.-]+', text)\n",
565+
"print(\"Email found:\", emails)\n",
566+
"\n",
567+
"# 2. Replace domains with ***.com\n",
568+
"masked_text = re.sub(r'@[\\w\\.-]+', '@***.ai', text)\n",
569+
"print(\"New text:\", masked_text)"
570+
]
571+
},
496572
{
497573
"cell_type": "markdown",
498574
"id": "footer",

09_oop.ipynb

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,12 +266,46 @@
266266
"---"
267267
]
268268
},
269+
{
270+
"cell_type": "markdown",
271+
"metadata": {},
272+
"source": [
273+
"## 6. L'operatore `is` vs `==`: Identità e Uguaglianza 🔍\n",
274+
"\n",
275+
"In Python esistono due modi diversi di confrontare gli oggetti:\n",
276+
"\n",
277+
"- **`==`** → confronta i **valori** (il contenuto degli oggetti).\n",
278+
"- **`is`** → confronta l'**identità** (cioè se due variabili puntano allo stesso oggetto in memoria).\n",
279+
"\n",
280+
"**Esempio:**"
281+
]
282+
},
283+
{
284+
"cell_type": "code",
285+
"execution_count": null,
286+
"metadata": {},
287+
"outputs": [],
288+
"source": [
289+
"class Person:\n",
290+
" def __init__(self, name, age):\n",
291+
" self.name = name\n",
292+
" self.age = age\n",
293+
"\n",
294+
"person1 = Person(\"Mario\", 30)\n",
295+
"person2 = Person(\"Mario\", 30)\n",
296+
"person3 = person1\n",
297+
"\n",
298+
"print(person1 == person2) # False\n",
299+
"print(person1 is person2) # False → different instances in memory\n",
300+
"print(person1 is person3) # True → same instance"
301+
]
302+
},
269303
{
270304
"cell_type": "markdown",
271305
"id": "c5de76d0",
272306
"metadata": {},
273307
"source": [
274-
"## 6. Polimorfismo: Tante Forme, Stesso Comportamento 🎭\n",
308+
"## 7. Polimorfismo: Tante Forme, Stesso Comportamento 🎭\n",
275309
"\n",
276310
"Il **polimorfismo** permette a oggetti di classi diverse di rispondere in modo specifico allo stesso metodo. Questo rende il tuo codice più flessibile e facile da estendere."
277311
]
@@ -319,7 +353,7 @@
319353
"id": "f92678a7",
320354
"metadata": {},
321355
"source": [
322-
"## 7. Classi Astratte 📝\n",
356+
"## 8. Classi Astratte 📝\n",
323357
"\n",
324358
"Una **classe astratta** serve come modello e non può essere istanziata direttamente. Contiene uno o più **metodi astratti** (metodi senza implementazione), che devono essere obbligatoriamente implementati da qualsiasi sottoclasse che eredita da essa. Questo garantisce una struttura comune per tutte le classi derivate.\n",
325359
"\n",

docs/quiz.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ <h1>Certificato Python 🐍</h1>
135135
{q:"In Python, qual è la differenza tra 'is' e '=='?", a:["'is' confronta identità, '==' confronta valori","Sono uguali","'==' confronta identità","'is' è per numeri, '==' per stringhe"], c:"'is' confronta identità, '==' confronta valori"},
136136
{q:"Qual è il costrutto per gestire un contesto (es. aprire file)?", a:["with","context","using","as"], c:"with"},
137137
{q:"Qual è il risultato di: bool('False')", a:["True","False","Errore","None"], c:"True"},
138-
{q:"Quale libreria Python è usata per i test unitari?", a:["unittest","pytest","doctest","tutte le precedenti"], c:"tutte le precedenti"},
138+
{q:"Quale libreria Python è usata per i test unitari?", a:["unittest","requests","json","tutte le precedenti"], c:"tutte le precedenti"},
139139
{q:"Qual è il metodo per aggiungere un elemento ad un dizionario?", a:["dict[key]=val","dict.add()","dict.append()","dict.push()"], c:"dict[key]=val"},
140140
{q:"Qual è l’output di: len(set([1,1,2,3]))", a:["3","4","2","1"], c:"3"},
141141
{q:"Qual è la parola chiave per definire una classe?", a:["class","Class","defclass","object"], c:"class"}

0 commit comments

Comments
 (0)