Skip to content

Commit ca92da5

Browse files
committed
aggiunto paragrafo su f-string
1 parent 3395d25 commit ca92da5

File tree

3 files changed

+159
-33
lines changed

3 files changed

+159
-33
lines changed

01_primi_passi.ipynb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"\n",
2222
"### Competenze richieste\n",
2323
"\n",
24-
"Questo corso è pensato per i **principianti assoluti**. Non è richiesta alcuna esperienza di programmazione pregressa. Le uniche competenze utili sono una conoscenza di base di come usare un computer e familiarità con l'uso di un browser web e del terminale (o Prompt dei comandi) del tuo sistema operativo."
24+
"Questo corso è pensato per i **principianti assoluti**. Non è richiesta alcuna esperienza di programmazione pregressa. Le uniche competenze utili sono una conoscenza di base di come usare un computer e familiarità con l'uso di un browser web e del terminale (o Prompt dei comandi) del sistema operativo."
2525
]
2626
},
2727
{
@@ -48,7 +48,7 @@
4848
"source": [
4949
"### Installazione di Python e dell'editor\n",
5050
"\n",
51-
"A seconda del sistema operativo in uso, i passaggi sono leggermente diversi. Prima di iniziare a programmare occorre assicurasi di avere Python installato e configurato correttamente prima di procedere.\n",
51+
"A seconda del sistema operativo in uso, i passaggi sono leggermente diversi. Prima di iniziare a programmare occorre assicurarsi di avere Python installato e configurato correttamente prima di procedere.\n",
5252
"\n",
5353
"**Su Linux**\n",
5454
"- **Python:** È quasi sempre preinstallato. Si può verificare con il comando `python3 --version`.\n",
@@ -92,7 +92,7 @@
9292
"id": "7c25e16f",
9393
"metadata": {},
9494
"source": [
95-
"**Perché è così importante?** Questo semplice comando ci dimostra tre cose fondamentali:\n",
95+
"**Perché è così importante?** Questo semplice comando dimostra tre cose fondamentali:\n",
9696
"- **Sintassi chiara:** La sintassi di Python è intuitiva e facile da leggere.\n",
9797
"- **Funzioni:** E' stata usata una funzione (`print()`). Le funzioni sono blocchi di codice riutilizzabili.\n",
9898
"- **Esecuzione:** E' stato eseguito un programma completo, anche se composto da una sola riga."
@@ -125,7 +125,7 @@
125125
"metadata": {},
126126
"source": [
127127
"### Esempio: `greet.py`\n",
128-
"Creare un file di testo e salvalo come `greet.py` in una cartella di lavoro. Al suo interno, scrivere il seguente codice:"
128+
"Creare un file di testo e salvarlo come `greet.py` in una cartella di lavoro. Al suo interno, scrivere il seguente codice:"
129129
]
130130
},
131131
{
@@ -212,7 +212,7 @@
212212
"\n",
213213
"La lista `sys.path` include, tra gli altri, i seguenti percorsi:\n",
214214
"\n",
215-
"1. **La directory in cui si trova il tuo script.** Questo permette di importare facilmente i tuoi file (es. `import saluto`).\n",
215+
"1. **La directory in cui si trova il tuo script.** Questo permette di importare facilmente i file (es. `import saluto`).\n",
216216
"2. **Le directory delle librerie standard di Python.** Qui si trovano i moduli base come `math`, `sys` e `os`.\n",
217217
"3. **Le directory dove sono installate le librerie di terze parti.** Queste sono le librerie installate tramite `pip`.\n",
218218
"\n",
@@ -271,7 +271,7 @@
271271
"source": [
272272
"### Cos'è Jupyter Notebook?\n",
273273
"\n",
274-
"Jupyter Notebook è un'applicazione web open-source che ti permette di creare e condividere documenti contenenti codice live, equazioni, visualizzazioni e testo esplicativo. È uno strumento essenziale per la **data science**, l'apprendimento automatico e la ricerca scientifica, ma è anche ideale per la didattica, poiché ti permette di eseguire piccoli blocchi di codice e vederne immediatamente i risultati."
274+
"Jupyter Notebook è un'applicazione web open-source che permette di creare e condividere documenti contenenti codice live, equazioni, visualizzazioni e testo esplicativo. È uno strumento essenziale per la **data science**, l'apprendimento automatico e la ricerca scientifica, ma è anche ideale per la didattica, poiché permette di eseguire piccoli blocchi di codice e vederne immediatamente i risultati."
275275
]
276276
},
277277
{

02_sintassi_base.ipynb

Lines changed: 144 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@
116116
"---\n",
117117
"## Variabili e assegnazioni\n",
118118
"\n",
119-
"Una **variabile** è un contenitore a si assegna un valore. In Python, non è necessario dichiarare il tipo di una variabile in anticipo; l’interprete lo deduce automaticamente dal valore che le viene assegnato. Questo approccio si chiama **tipizzazione dinamica** ed è stato scelto per rendere il linguaggio più **semplice e veloce da scrivere**, soprattutto per chi inizia o per chi sviluppa prototipi. Non dover specificare il tipo riduce la quantità di codice “boilerplate” e permette di concentrarsi sulla logica.\n",
119+
"Una **variabile** è un contenitore a cui si assegna un valore. In Python, non è necessario dichiarare il tipo di una variabile in anticipo; l’interprete lo deduce automaticamente dal valore che le viene assegnato. Questo approccio si chiama **tipizzazione dinamica** ed è stato scelto per rendere il linguaggio più **semplice e veloce da scrivere**, soprattutto per chi inizia o per chi sviluppa prototipi. Non dover specificare il tipo riduce la quantità di codice “boilerplate” e permette di concentrarsi sulla logica.\n",
120120
"\n",
121121
"I nomi delle variabili devono iniziare con una lettera o un underscore (`_`) e possono contenere lettere, numeri e underscore. Inoltre, sono **case-sensitive**: ad esempio `variabile`, `Variabile` e `VARIABILE` sono considerati tre identificatori distinti.\n",
122122
"\n",
@@ -478,37 +478,124 @@
478478
},
479479
{
480480
"cell_type": "markdown",
481-
"id": "dcd2b015",
482481
"metadata": {},
483482
"source": [
484483
"---\n",
485484
"## Funzioni di input e output\n",
486485
"\n",
487-
"### Funzione `print()`\n",
488-
"La funzione `print()` serve per visualizzare l'output a schermo. È estremamente versatile e supporta la formattazione avanzata con le **f-string** (`f-string`), un modo potente per incorporare variabili all'interno di una stringa in modo leggibile e conciso.\n",
486+
"### Funzione `print()` 🖨️\n",
487+
"La funzione `print()` serve per visualizzare **dati o messaggi a schermo**. È estremamente flessibile e consente di:\n",
488+
"- stampare più valori contemporaneamente,\n",
489+
"- personalizzare il separatore (`sep`) e il termine della riga (`end`),\n",
490+
"- formattare l'output con f-string, `format()` o placeholder `%`.\n",
489491
"\n",
490-
"### Funzione `input()`\n",
491-
"La funzione `input()` serve per leggere dati inseriti dall'utente tramite la tastiera. Restituisce sempre una **stringa**, quindi è necessario convertirla per usarla in operazioni matematiche."
492-
]
493-
},
494-
{
495-
"cell_type": "code",
496-
"execution_count": null,
497-
"id": "9b088d70",
498-
"metadata": {},
499-
"outputs": [],
500-
"source": [
501-
"# Example with print() and f-string\n",
502-
"user_name = \"Mario\"\n",
503-
"age = 30\n",
504-
"print(f\"Hello, {user_name}. You are {age} years old.\")\n",
492+
"#### Argomenti base di `print()`\n",
493+
"\n",
494+
"```python\n",
495+
"print('Ciao', 'mondo', sep=' - ', end='!\\n')\n",
496+
"# Output: Ciao - mondo!\n",
497+
"```\n",
498+
"- `sep` → definisce il separatore tra più argomenti (di default è uno spazio)\n",
499+
"- `end` → definisce cosa viene stampato alla fine della riga (di default è `\\n`, cioè nuova riga)\n",
500+
"\n",
501+
"#### F-string (formattazione moderna e leggibile)\n",
502+
"\n",
503+
"Le **f-string** (dal prefisso `f`) permettono di inserire variabili ed espressioni direttamente dentro una stringa:\n",
504+
"\n",
505+
"```python\n",
506+
"nome = 'Luca'\n",
507+
"saldo = 1234.567\n",
508+
"print(f\"Ciao {nome}, il tuo saldo è {saldo:.2f}€\")\n",
509+
"# Output: Ciao Luca, il tuo saldo è 1234.57€\n",
510+
"```\n",
511+
"- `{saldo:.2f}` → mostra due decimali (utile per importi o valori numerici)\n",
512+
"- all’interno delle `{}` si possono anche eseguire **espressioni Python**, es. `{2 + 3}` → 5\n",
513+
"\n",
514+
"#### Metodo `str.format()`\n",
515+
"\n",
516+
"È una forma più vecchia ma ancora diffusa di formattazione:\n",
517+
"\n",
518+
"```python\n",
519+
"nome = 'Paola'\n",
520+
"anni = 28\n",
521+
"print('Ciao {}, hai {} anni.'.format(nome, anni))\n",
522+
"# Output: Ciao Paola, hai 28 anni.\n",
523+
"\n",
524+
"print('Ciao {n}, hai {a} anni.'.format(n=nome, a=anni))\n",
525+
"```\n",
526+
"\n",
527+
"Si può controllare la formattazione numerica:\n",
528+
"```python\n",
529+
"print('Il prezzo è {:.2f}€'.format(19.99)) # 2 decimali\n",
530+
"print('Numero: {:>6}'.format(42)) # allineato a destra in 6 spazi\n",
531+
"```\n",
532+
"\n",
533+
"#### Placeholder in stile C (`%`)\n",
534+
"\n",
535+
"Un metodo più datato, ancora usato in alcuni script:\n",
536+
"\n",
537+
"```python\n",
538+
"nome = 'Aldo'\n",
539+
"eta = 25\n",
540+
"print('Ciao %s, hai %d anni.' % (nome, eta))\n",
541+
"# %s → stringa, %d → intero, %f → float\n",
542+
"```\n",
543+
"\n",
544+
"#### Esempio comparativo\n",
545+
"\n",
546+
"| Metodo | Sintassi | Output |\n",
547+
"|--------|-----------|--------|\n",
548+
"| f-string | `f\"Ciao {nome}\"` | Ciao Luca |\n",
549+
"| `format()` | `'Ciao {}'.format(nome)` | Ciao Luca ||\n",
550+
"| `%` placeholder | `'Ciao %s' % nome` | Ciao Luca |\n",
551+
"\n",
552+
"Le **f-string** sono considerate la scelta **più moderna, leggibile e veloce**.\n",
553+
"\n",
554+
"---\n",
555+
"### Funzione `input()` ⌨️\n",
556+
"La funzione `input()` serve per **leggere dati dall’utente**. Restituisce sempre una **stringa**, quindi è spesso necessario convertirla per usarla in calcoli numerici.\n",
505557
"\n",
506-
"# Example with input() and casting\n",
507-
"age_str = input(\"Enter your age: \")\n",
508-
"age_int = int(age_str)\n",
509-
"print(f\"In 5 years you will be {age_int + 5} years old.\")"
558+
"```python\n",
559+
"nome = input('Come ti chiami? ')\n",
560+
"eta = int(input('Quanti anni hai? '))\n",
561+
"print(f'Ciao {nome}, tra 10 anni avrai {eta + 10} anni!')\n",
562+
"```"
510563
]
511-
},
564+
},
565+
{
566+
"cell_type": "code",
567+
"metadata": {},
568+
"execution_count": null,
569+
"outputs": [],
570+
"source": [
571+
"# Examples of f-strings and advanced formatting\n",
572+
"name = 'Luca'\n",
573+
"age = 28\n",
574+
"balance = 1234.5678\n",
575+
"\n",
576+
"# Simple variable insertion\n",
577+
"print(f'Hello {name}, you are {age} years old.')\n",
578+
"\n",
579+
"# Number formatting: decimals\n",
580+
"print(f'Your balance is {balance:.2f}€') # 2 decimals\n",
581+
"\n",
582+
"# Expressions inside f-strings\n",
583+
"print(f'In 5 years you will be {age + 5}.')\n",
584+
"\n",
585+
"# Alignment and width\n",
586+
"print(f'|{name:<10}|{age:^5}|{balance:>10.2f}|')\n",
587+
"# < → align left, ^ → center, > → align right\n",
588+
"\n",
589+
"# Multiline with f-string\n",
590+
"text = f'''\n",
591+
"Hello {name},\n",
592+
"You are {age}.\n",
593+
"Your current balance is {balance:.2f}€\n",
594+
"'''\n",
595+
"print(text)"
596+
]
597+
}
598+
,
512599
{
513600
"cell_type": "markdown",
514601
"id": "bdea496b",
@@ -537,7 +624,12 @@
537624
"\n",
538625
"### Esercizio 5: Ciclo while\n",
539626
"- Chiedere all’utente di indovinare un numero segreto (ad esempio 7).\n",
540-
"- Continuare a chiedere finché non indovina."
627+
"- Continuare a chiedere finché non indovina.\n",
628+
"\n",
629+
"### Esercizio 6: Formattazione con f-string\n",
630+
"- Creare due variabili: `name` e `balance` (ad esempio `name = 'Luca'`, `balance = 1234.567`).\n",
631+
"- Stampare una frase usando una **f-string** che includa il nome e il saldo formattato con **due decimali**.\n",
632+
"- Provare ad inserire anche un’espressione matematica direttamente dentro la f-string, ad esempio sommare 100 al saldo."
541633
]
542634
},
543635
{
@@ -666,10 +758,10 @@
666758
"### Soluzione Esercizio 5: Ciclo while\n"
667759
]
668760
},
669-
{
761+
{
670762
"cell_type": "code",
671763
"execution_count": null,
672-
"id": "67dd4b16",
764+
"id": "67dd4b17",
673765
"metadata": {},
674766
"outputs": [],
675767
"source": [
@@ -687,6 +779,31 @@
687779
" guess_number()"
688780
]
689781
},
782+
{
783+
"cell_type": "markdown",
784+
"id": "8337790f",
785+
"metadata": {},
786+
"source": [
787+
"### Soluzione Esercizio 6: f-string\n"
788+
]
789+
},
790+
{
791+
"cell_type": "code",
792+
"execution_count": null,
793+
"id": "67dd4b16",
794+
"metadata": {},
795+
"outputs": [],
796+
"source": [
797+
"def format_data():\n",
798+
" name = \"Luca\"\n",
799+
" balance = 1234.567\n",
800+
" print(f'Hi {name} Your balance is {balance:.2f} €')\n",
801+
" print(f'Hi {name} Your balance is now {balance + 100:.2f} €')\n",
802+
"\n",
803+
"if __name__ == \"__main__\":\n",
804+
" format_data()"
805+
]
806+
},
690807
{
691808
"cell_type": "markdown",
692809
"id": "footer",

code/02/solutions/exercise06.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
def format_data():
2+
name = "Luca"
3+
balance = 1234.567
4+
print(f'Hi {name} Your balance is {balance:.2f} €')
5+
print(f'Hi {name} Your balance is now {balance + 100:.2f} €')
6+
7+
8+
if __name__ == "__main__":
9+
format_data()

0 commit comments

Comments
 (0)