Skip to content

Commit 33ce4ba

Browse files
committed
first revision
1 parent 1be518c commit 33ce4ba

9 files changed

Lines changed: 577 additions & 308 deletions

00_sommario_corso.ipynb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
"source": [
77
"# 📚 Sommario del Corso Python per Principianti\n",
88
"\n",
9-
"Benvenuto al corso! Questo è un percorso introduttivo pensato per aiutarti a muovere i primi passi nel linguaggio Python. È uno dei pochi corsi per principianti di questo tipo disponibili interamente in italiano, progettato per offrirti un apprendimento chiaro e accessibile.\n",
9+
"Questo corso è un percorso introduttivo pensato per aiutarti a muovere i primi passi nel linguaggio Python. È uno dei pochi corsi per principianti di questo tipo disponibili interamente in italiano, progettato per offrirti un apprendimento chiaro e accessibile.\n",
1010
"\n",
1111
"---",
1212
"\n",
1313
"## 🧠 Python nell'Era dell'Intelligenza Artificiale\n",
1414
"\n",
15-
"Saper programmare in Python oggi non significa solo imparare un linguaggio, ma acquisire una competenza fondamentale per l'era digitale, in particolare nel campo dell'Intelligenza Artificiale (AI) e dei Large Language Model (LLM).\n",
15+
"Saper programmare in Python oggi non significa solo imparare un linguaggio, ma acquisire una competenza fondamentale in particolare nel campo dell'Intelligenza Artificiale (AI) e dei Large Language Model (LLM).\n",
1616
"\n",
1717
"Python è diventato il linguaggio dominante in questo settore per diverse ragioni:\n",
1818
"\n",

01_primi_passi.ipynb

Lines changed: 116 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"\n",
99
"---",
1010
"\n",
11-
"Benvenuto/a nel corso base di Python! In questa lezione, vedremo cosa ti serve per iniziare, dalle competenze di base agli strumenti giusti per il tuo computer, fino a scrivere il tuo primo, semplice programma \"Hello, World!\"."
11+
"In questa lezione, vedremo cosa ti serve per iniziare, dalle competenze di base agli strumenti per scrivere i primi programmi, fino a scrivere il tuo primo semplice programma \"Hello, World!\"."
1212
]
1313
},
1414
{
@@ -28,12 +28,12 @@
2828
"source": [
2929
"### L'ambiente di sviluppo: Editor o IDE?\n",
3030
"\n",
31-
"Per scrivere codice, hai bisogno di un programma chiamato **editor di testo** o di un **IDE (Integrated Development Environment)**. \n",
31+
"Per scrivere codice, hai bisogno di un programma chiamato **editor di testo** o di un **IDE (Integrated Development Environment)**.\n",
3232
"\n",
33-
"- **Editor di testo:** Un programma leggero (come Blocco Note, TextEdit, VS Code) che ti permette di scrivere testo semplice. È perfetto per iniziare, in quanto ti concentri solo sul codice.\n",
34-
"- **IDE:** Un ambiente più completo che include un editor, un debugger, un compilatore e altri strumenti. È ottimo per progetti complessi, ma può essere più impegnativo per i principianti.\n",
33+
"- **Editor di testo:** Un programma leggero (come Blocco Note su Windows o TextEdit su macOS) che ti permette di scrivere testo semplice. È perfetto per iniziare, in quanto ti concentri solo sul codice.\n",
34+
"- **IDE:** Un ambiente più completo che include un editor, un debugger, un compilatore e altri strumenti. È ottimo per progetti complessi, ma può essere più impegnativo per i principianti.\n",
3535
"\n",
36-
"Per questo corso, un **editor di testo** è più che sufficiente. Ti consigliamo **Visual Studio Code (VS Code)**, che è gratuito, leggero e disponibile per tutti i sistemi operativi."
36+
"Per questo corso, un **editor di testo** è più che sufficiente. Ti consigliamo **[Visual Studio Code (VS Code)](https://code.visualstudio.com/)**, che è gratuito, leggero e disponibile per tutti i sistemi operativi."
3737
]
3838
},
3939
{
@@ -45,16 +45,16 @@
4545
"A seconda del tuo sistema operativo, i passaggi sono leggermente diversi. Assicurati di avere Python installato e configurato correttamente prima di procedere.\n",
4646
"\n",
4747
"**Su Linux**\n",
48-
"- **Python:** È quasi sempre preinstallato. Verifica con `python3 --version`.\n",
49-
"- **Editor:** Installa **VS Code** dal sito ufficiale o tramite il gestore di pacchetti (ad es., `sudo snap install code --classic`).\n",
48+
"- **Python:** È quasi sempre preinstallato. Verifica con `python3 --version`.\n",
49+
"- **Editor:** Installa **VS Code** dal sito ufficiale o tramite il gestore di pacchetti (ad es., `sudo snap install code --classic`).\n",
5050
"\n",
5151
"**Su macOS**\n",
52-
"- **Python:** Scarica l'installer dal sito ufficiale di Python (`https://www.python.org/downloads/`) o usa Homebrew (`brew install python3`).\n",
53-
"- **Editor:** Installa **VS Code** dal sito ufficiale.\n",
52+
"- **Python:** Scarica l'installer dal **[sito ufficiale di Python](https://www.python.org/downloads/)** o usa Homebrew (`brew install python3`).\n",
53+
"- **Editor:** Installa **[VS Code](https://code.visualstudio.com/)** dal sito ufficiale.\n",
5454
"\n",
5555
"**Su Windows**\n",
56-
"- **Python:** Scarica l'installer dal sito ufficiale di Python (`https://www.python.org/downloads/`). **Ricorda di spuntare la casella `Add Python to PATH`** durante l'installazione.\n",
57-
"- **Editor:** Installa **VS Code** dal sito ufficiale."
56+
"- **Python:** Scarica l'installer dal **[sito ufficiale di Python](https://www.python.org/downloads/)**. **Ricorda di spuntare la casella `Add Python to PATH`** durante l'installazione.\n",
57+
"- **Editor:** Installa **[VS Code](https://code.visualstudio.com/)** dal sito ufficiale."
5858
]
5959
},
6060
{
@@ -65,7 +65,7 @@
6565
"\n",
6666
"## 2. Il tuo primo programma: \"Hello, World!\"\n",
6767
"\n",
68-
"Ora che hai tutto il necessario, possiamo scrivere il nostro primo programma. In Python, stampare il messaggio \"Hello, World!\" è incredibilmente semplice grazie alla funzione `print()`."
68+
"Ora che hai tutto il necessario, possiamo scrivere il nostro primo programma. In Python, stampare il messaggio \"Hello, World!\" è semplice grazie alla funzione `print()`."
6969
]
7070
},
7171
{
@@ -82,9 +82,9 @@
8282
"metadata": {},
8383
"source": [
8484
"**Perché è così importante?** Questo semplice comando ci dimostra tre cose fondamentali:\n",
85-
"- **Sintassi chiara:** La sintassi di Python è intuitiva e facile da leggere.\n",
86-
"- **Funzioni:** Hai già usato la tua prima funzione (`print()`). Le funzioni sono blocchi di codice riutilizzabili.\n",
87-
"- **Esecuzione:** Hai eseguito un programma completo, anche se composto da una sola riga."
85+
"- **Sintassi chiara:** La sintassi di Python è intuitiva e facile da leggere.\n",
86+
"- **Funzioni:** Hai già usato la tua prima funzione (`print()`). Le funzioni sono blocchi di codice riutilizzabili.\n",
87+
"- **Esecuzione:** Hai eseguito un programma completo, anche se composto da una sola riga."
8888
]
8989
},
9090
{
@@ -107,19 +107,42 @@
107107
"metadata": {},
108108
"outputs": [],
109109
"source": [
110-
"# Questo è il contenuto del file saluto.py\n",
111-
"nome = input(\"Come ti chiami? \")\n",
112-
"print(f\"Ciao, {nome}!\")"
110+
"def saluta_utente():\n",
111+
" nome = input(\"Come ti chiami? \")\n",
112+
" print(f\"Ciao, {nome}!\")\n",
113+
"\n",
114+
"if __name__ == \"__main__\":\n",
115+
" saluta_utente()"
116+
]
117+
},
118+
{
119+
"cell_type": "markdown",
120+
"metadata": {},
121+
"source": [
122+
"### Il costrutto `if __name__ == \"__main__\":` 🤔\n",
123+
"\n",
124+
"Hai sicuramento notato il blocco `if __name__ == \"__main__\":`. Questo è un costrutto comune e importante in Python. Serve a controllare se il file Python viene eseguito direttamente o se viene importato come modulo in un altro script.\n",
125+
"\n",
126+
"1. **`__name__`** è una variabile speciale che Python imposta automaticamente.\n",
127+
"2. Quando esegui il file direttamente (ad es. con `python3 saluto.py`), il valore di `__name__` è `\"__main__\"`.\n",
128+
"3. Se un altro file Python importa il tuo `saluto.py` (`import saluto`), il valore di `__name__` sarà il nome del modulo, cioè `\"saluto\"`.\n",
129+
"\n",
130+
"Di conseguenza, il codice all'interno del blocco `if` verrà eseguito **solo se il file viene lanciato come programma principale**, e non quando viene importato da un altro file. Questo rende il tuo codice più riutilizzabile e organizzato."
113131
]
114132
},
115133
{
116134
"cell_type": "markdown",
117135
"metadata": {},
118136
"source": [
119-
"### Eseguire il file dal terminale\n",
120-
"1. **Apri il terminale** (Prompt dei comandi su Windows, Terminale su macOS/Linux).\n",
121-
"2. **Naviga** nella cartella dove hai salvato `saluto.py` usando il comando `cd`.\n",
122-
"3. **Esegui il file** con il comando `python3 saluto.py` (su Windows potresti dover usare solo `python`)."
137+
"### Passare argomenti esterni al programma 🚀\n",
138+
"\n",
139+
"Spesso, invece di chiedere all'utente di inserire dati con `input()`, vuoi che il programma li riceva direttamente quando lo lanci da terminale. Puoi farlo usando il modulo della libreria standard `sys` e in particolare la lista `sys.argv`.\n",
140+
"\n",
141+
"**`sys.argv`** (argument vector) è una lista che contiene tutti gli argomenti passati dalla riga di comando. Il primo elemento, `sys.argv[0]`, è sempre il nome del file script stesso.\n",
142+
"\n",
143+
"### Esempio: `saluta_args.py`\n",
144+
"Crea un nuovo file chiamato `saluta_args.py` con il seguente codice. Questo programma saluterà una persona il cui nome è fornito come argomento esterno.\n",
145+
"\n"
123146
]
124147
},
125148
{
@@ -128,8 +151,30 @@
128151
"metadata": {},
129152
"outputs": [],
130153
"source": [
131-
"# Esempio di esecuzione nel terminale\n",
132-
"python3 saluto.py"
154+
"import sys\n",
155+
"\n",
156+
"def saluta_utente_con_argomento():\n",
157+
" if len(sys.argv) > 1:\n",
158+
" nome = sys.argv[1] # sys.argv[0] è il nome del file\n",
159+
" print(f\"Ciao, {nome}! Benvenuto.\")\n",
160+
" else:\n",
161+
" print(\"Errore: Nessun nome fornito. Esegui il programma così: python3 saluta_args.py <il_tuo_nome>\")\n",
162+
"\n",
163+
"if __name__ == \"__main__\":\n",
164+
" saluta_utente_con_argomento()"
165+
]
166+
},
167+
{
168+
"cell_type": "markdown",
169+
"metadata": {},
170+
"source": [
171+
"### Eseguire il file con argomenti\n",
172+
"Dal terminale, lancia il programma fornendo un nome dopo il nome del file:\n",
173+
"```bash\n",
174+
"python3 saluta_args.py Giacomo\n",
175+
"```\n",
176+
"\n",
177+
"L'output sarà `Ciao, Giacomo! Benvenuto.`"
133178
]
134179
},
135180
{
@@ -142,8 +187,8 @@
142187
"\n",
143188
"Python ha una ricca **libreria standard** di moduli che puoi importare per estendere le funzionalità del tuo codice. Le librerie sono collezioni di funzioni e strumenti predefiniti.\n",
144189
"\n",
145-
"- Si usa la parola chiave `import` per includere un modulo.\n",
146-
"- Per usare un elemento del modulo, si usa la sintassi `nome_modulo.elemento`.\n",
190+
"- Si usa la parola chiave `import` per includere un modulo.\n",
191+
"- Per usare un elemento del modulo, si usa la sintassi `nome_modulo.elemento`.\n",
147192
"\n",
148193
"### Esempi di importazione"
149194
]
@@ -169,13 +214,15 @@
169214
"\n",
170215
"## 5. Un breve sguardo all'interprete\n",
171216
"\n",
172-
"Python è un **linguaggio interpretato**. Ciò significa che non ha bisogno di essere compilato in un file eseguibile prima di essere lanciato. L'**interprete Python** legge ed esegue il codice riga per riga, rendendo lo sviluppo più veloce e flessibile.\n",
217+
"Python è un **linguaggio interpretato**, a differenza di linguaggi come C++ che sono compilati. Questo significa che il tuo codice non viene tradotto in un file eseguibile separato prima di essere lanciato.\n",
218+
"\n",
219+
"Il processo di esecuzione funziona in questo modo:\n",
173220
"\n",
174-
"- L'interprete legge il file `.py`.\n",
175-
"- Lo converte in un codice intermedio (bytecode).\n",
176-
"- Esegue il bytecode, producendo il risultato.\n",
221+
"1. **Lettura del codice sorgente**: L'interprete Python legge il tuo file `.py` riga per riga.\n",
222+
"2. **Conversione in bytecode**: Il codice sorgente viene convertito in un codice intermedio, chiamato **bytecode**. Questo è un set di istruzioni a basso livello, ma non è ancora eseguibile direttamente dal sistema operativo.\n",
223+
"3. **Esecuzione da parte della PVM**: La **Python Virtual Machine (PVM)** esegue il bytecode. La PVM è un programma che fa da ponte tra il tuo codice e il sistema operativo, rendendo il codice portabile e funzionante su qualsiasi piattaforma in cui è installato l'interprete Python.\n",
177224
"\n",
178-
"Questo processo è automatico e non richiede passaggi aggiuntivi da parte tua."
225+
"Questo processo automatico e flessibile è uno dei motivi principali per cui lo sviluppo con Python è così rapido ed efficiente."
179226
]
180227
},
181228
{
@@ -197,8 +244,13 @@
197244
"outputs": [],
198245
"source": [
199246
"# Soluzione Esercizio 1\n",
200-
"nome = input(\"Come ti chiami? \")\n",
201-
"print(f\"Ciao {nome}! È un piacere averti qui.\")"
247+
"def saluta_utente():\n",
248+
" nome = input(\"Come ti chiami? \")\n",
249+
" print(f\"Ciao {nome}! È un piacere averti qui.\")\n",
250+
"\n",
251+
"# Questo blocco assicura che il codice venga eseguito solo quando il file è il programma principale\n",
252+
"if __name__ == \"__main__\":\n",
253+
" saluta_utente()"
202254
]
203255
},
204256
{
@@ -218,9 +270,37 @@
218270
"# Soluzione Esercizio 2\n",
219271
"import math\n",
220272
"\n",
221-
"numero = float(input(\"Inserisci un numero: \"))\n",
222-
"radice = math.sqrt(numero)\n",
223-
"print(f\"La radice quadrata di {numero} è {radice}\")"
273+
"def calcola_radice():\n",
274+
" numero = float(input(\"Inserisci un numero: \"))\n",
275+
" radice = math.sqrt(numero)\n",
276+
" print(f\"La radice quadrata di {numero} è {radice}\")\n",
277+
"\n",
278+
"if __name__ == \"__main__\":\n",
279+
" calcola_radice()"
280+
]
281+
},
282+
{
283+
"cell_type": "markdown",
284+
"metadata": {},
285+
"source": [
286+
"### Esercizio 3: Funzione e main\n",
287+
"Scrivi un programma chiamato `calcolatrice.py` che definisce una funzione `somma(a, b)` e la chiama all'interno del blocco `if __name__ == \"__main__\":` per stampare il risultato di una somma, ad esempio 5 + 3."
288+
]
289+
},
290+
{
291+
"cell_type": "code",
292+
"execution_count": null,
293+
"metadata": {},
294+
"outputs": [],
295+
"source": [
296+
"# Soluzione Esercizio 3\n",
297+
"def somma(a, b):\n",
298+
" \"\"\"Restituisce la somma di due numeri.\"\"\"\n",
299+
" return a + b\n",
300+
"\n",
301+
"if __name__ == \"__main__\":\n",
302+
" risultato = somma(5, 3)\n",
303+
" print(f\"Il risultato della somma è: {risultato}\")"
224304
]
225305
}
226306
],

0 commit comments

Comments
 (0)