|
116 | 116 | "---\n", |
117 | 117 | "## Variabili e assegnazioni\n", |
118 | 118 | "\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", |
120 | 120 | "\n", |
121 | 121 | "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", |
122 | 122 | "\n", |
|
478 | 478 | }, |
479 | 479 | { |
480 | 480 | "cell_type": "markdown", |
481 | | - "id": "dcd2b015", |
482 | 481 | "metadata": {}, |
483 | 482 | "source": [ |
484 | 483 | "---\n", |
485 | 484 | "## Funzioni di input e output\n", |
486 | 485 | "\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", |
489 | 491 | "\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", |
505 | 557 | "\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 | + "```" |
510 | 563 | ] |
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 | +, |
512 | 599 | { |
513 | 600 | "cell_type": "markdown", |
514 | 601 | "id": "bdea496b", |
|
537 | 624 | "\n", |
538 | 625 | "### Esercizio 5: Ciclo while\n", |
539 | 626 | "- 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." |
541 | 633 | ] |
542 | 634 | }, |
543 | 635 | { |
|
666 | 758 | "### Soluzione Esercizio 5: Ciclo while\n" |
667 | 759 | ] |
668 | 760 | }, |
669 | | - { |
| 761 | + { |
670 | 762 | "cell_type": "code", |
671 | 763 | "execution_count": null, |
672 | | - "id": "67dd4b16", |
| 764 | + "id": "67dd4b17", |
673 | 765 | "metadata": {}, |
674 | 766 | "outputs": [], |
675 | 767 | "source": [ |
|
687 | 779 | " guess_number()" |
688 | 780 | ] |
689 | 781 | }, |
| 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 | + }, |
690 | 807 | { |
691 | 808 | "cell_type": "markdown", |
692 | 809 | "id": "footer", |
|
0 commit comments