From 80e93cdf40d991db2798aa416f1726535c332486 Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Mon, 25 Mar 2019 18:08:11 +0100 Subject: [PATCH 01/40] Add trinket.io --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 1554996..a809b7e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -30,7 +30,7 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [Come usare Python](Pyllole/01_Use_Python.md) - [Ambiente di sviluppo](Pyllole/05_Development_Environment.md) * [Sintassi di base](Pyllole/11_Syntax.md) * [Le variabili](Pyllole/21_Variables.md) -* [Print](Pyllole/23_Print.md) - [Input](Pyllole/25_Input.md) - [If/Else](Pyllole/27_If-Else.md) - [Cicli](Pyllole/Loops.md) +* [Print](Pyllole/23_Print.md) - [Input](Pyllole/25_Input.md) - [If/Else](Pyllole/27_If-Else.md) - [Cicli](Pyllole/29_Loops.md) * [Numeri](Pyllole/41_Type_Number.md) - [Stringhe](Pyllole/42_Type_String.md) - [Booleani](Pyllole/43_Type_Boolean.md) - [None](Pyllole/44_Type_None.md) * [Liste](Pyllole/53_Type_List.md) - [Tuple](Pyllole/55_Type_Tuple.md) - [Set](Pyllole/57_Type_Set.md) - [Dizionari](Pyllole/59_Type_Dictionary.md) * [Try/Except](Pyllole/61_Try_Except.md) @@ -44,7 +44,7 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * Per condividere il tuo codice, in un forum o chat, usa un servizio per la condivisione del codice * [hastebin](https://hastebin.com) - [arin.ga](https://arin.ga) - [dpaste.de](https://dpaste.de) * Puoi provare il tuo codice, senza installare nulla sul tuo PC, usando un compilatore online - * [Judge0 IDE](https://ide.judge0.com) - [repl.it](https://repl.it/) + * [Judge0 IDE](https://ide.judge0.com) - [trinket.io](https://trinket.io) - [repl.it](https://repl.it/) ## Documentazione Gratuita From a829219de79810fd5dd1a5611449a4616d50f252 Mon Sep 17 00:00:00 2001 From: Carlo Miron Date: Tue, 25 Jun 2019 10:16:49 +0200 Subject: [PATCH 02/40] fix'd url MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Syntax.md →11_Syntax.md --- docs/Pyllole/01_Use_Python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/01_Use_Python.md b/docs/Pyllole/01_Use_Python.md index 58e42b1..aa630f8 100644 --- a/docs/Pyllole/01_Use_Python.md +++ b/docs/Pyllole/01_Use_Python.md @@ -138,7 +138,7 @@ Eseguendo il file `prova.py` viene generato il file `prova.pyc` che, per spiegar ### Sintassi e stile di scrittura -Consulta la pagina relativa alla [sintassi di base](Syntax.md) per cominciare a conoscere il linguaggio python. +Consulta la pagina relativa alla [sintassi di base](11_Syntax.md) per cominciare a conoscere il linguaggio python. Anche se al momento è prematuro, sappi che in Python anche lo stile di scritture del codice è importante ed è definito nel [PEP 8 - Style Guide for Python Code](https://www.python.org/dev/peps/pep-0008/). From 779584bc77ac0b69dac50618dd9fb520ba25b8e9 Mon Sep 17 00:00:00 2001 From: Davide Rizzo Date: Wed, 3 Jul 2019 17:50:53 +0200 Subject: [PATCH 03/40] corretto link al gruppo Telegram --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index a809b7e..956542d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,7 +11,7 @@ Prima di voler scrivere un qualunque programma con Python è necessario conoscer ## Principali Riferimenti Online * **Python.org**: [il sito ufficiale in inglese](https://docs.python.org) -* **Python.it** : [sito ufficiale italiano](http://www.python.it/) - [Forum](http://www.python.it/forum) - [Telegram](https://t.me/pythonita) - [Mailing list](http://www.python.it/comunita/mailing-list/) +* **Python.it** : [sito ufficiale italiano](http://www.python.it/) - [Forum](http://www.python.it/forum) - [Telegram](https://t.me/python_ita) - [Mailing list](http://www.python.it/comunita/mailing-list/) * **Python-it.org**: [Sito](http://www.python-it.org) - [Forum](http://www.python-it.org/forum) **Cerca di usare, per quanto possibile, Python 3.x**, [a breve](https://pythonclock.org) Python 2.7 non verrà più supportato. From c010c1f5a5d27a2030c710a35b21e460f8867f7d Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Thu, 11 Jul 2019 09:05:21 +0200 Subject: [PATCH 04/40] new tutorial url --- docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/index.md b/docs/index.md index 956542d..65fc304 100644 --- a/docs/index.md +++ b/docs/index.md @@ -81,6 +81,7 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [Building Skills in Python](http://www.itmaybeahack.com/book/python-2.6/latex/BuildingSkillsinPython.pdf) * Tutorial * [A Beginner's Python Tutorial](https://en.wikibooks.org/wiki/A_Beginner%27s_Python_Tutorial) + * [Python 3 Module of the Week](https://pymotw.com) * [A Byte of Python](https://python.swaroopch.com/first_steps.html) * [CodeCademy: Python](https://www.codecademy.com/learn/python) From fb9c8c3a5aa6a6f7c2c6144954ae9c2bb59a6142 Mon Sep 17 00:00:00 2001 From: Angelo Turco Date: Tue, 8 Oct 2019 19:17:55 +0200 Subject: [PATCH 05/40] Update CODE_OF_CONDUCT.md fix link CC BY 4.0 License --- CODE_OF_CONDUCT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5e1dd8c..6448be4 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -22,5 +22,5 @@ Manutentori del progetto che non seguono o non fanno rispettare il codice di con Questo codice di condotta vale sia online che nella vita reale nel momento in cui un individuo sta rappresentando il progetto o la sua comunità. Questo codice di condatta è stato tradotto e adattato da: -The Contributor Covenant, version 1.3.0, available at [https://www.contributor-covenant.org/version/1/3/0/code-of-conduct.html](https://www.contributor-covenant.org/version/1/3/0/code-of-conduct.html) released under the [CC BY 4.0 License](https://github.com/ContributorCovenant/contributor_covenant/blob/master/LICENSE.md). +The Contributor Covenant, version 1.3.0, available at [https://www.contributor-covenant.org/version/1/3/0/code-of-conduct.html](https://www.contributor-covenant.org/version/1/3/0/code-of-conduct.html) released under the [CC BY 4.0 License](https://github.com/ContributorCovenant/contributor_covenant/blob/release/LICENSE.md). From 67a5de284d79cdbf8c27d49ce5754742bf96d370 Mon Sep 17 00:00:00 2001 From: Angelo Turco Date: Tue, 8 Oct 2019 19:31:00 +0200 Subject: [PATCH 06/40] Update index.md Update site python-it.org with forumpython.it --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 65fc304..6d05d22 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,7 +12,7 @@ Prima di voler scrivere un qualunque programma con Python è necessario conoscer ## Principali Riferimenti Online * **Python.org**: [il sito ufficiale in inglese](https://docs.python.org) * **Python.it** : [sito ufficiale italiano](http://www.python.it/) - [Forum](http://www.python.it/forum) - [Telegram](https://t.me/python_ita) - [Mailing list](http://www.python.it/comunita/mailing-list/) -* **Python-it.org**: [Sito](http://www.python-it.org) - [Forum](http://www.python-it.org/forum) +* **Forumpython.it**: [Sito e Forum](http://forumpython.it) **Cerca di usare, per quanto possibile, Python 3.x**, [a breve](https://pythonclock.org) Python 2.7 non verrà più supportato. From c6b8b253203e737e516f9f27f17a1ba491bd7307 Mon Sep 17 00:00:00 2001 From: Angelo Turco Date: Tue, 8 Oct 2019 19:46:57 +0200 Subject: [PATCH 07/40] Update 01_Use_Python.md fix link editor di testo --- docs/Pyllole/01_Use_Python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/01_Use_Python.md b/docs/Pyllole/01_Use_Python.md index aa630f8..fff60b0 100644 --- a/docs/Pyllole/01_Use_Python.md +++ b/docs/Pyllole/01_Use_Python.md @@ -107,7 +107,7 @@ Un'altro aiuto diretto nell'interprete è dato dalla funzione `dir()`, in grado Creare uno script significa creare un file contenente un programma Python. Questo file/programma potrà poi essere eseguito direttamente o importato da altri programmi. -Per creare un file script **basta un semplice [editor di testo](Pyllole/Development_Environment.md)**, nulla di più. Studiando Python è meglio evitare complessi ambienti di sviluppo (IDE), quando si conoscerà il linguaggio e si svilupperanno veri programmi, si potrà decidere di utilizzarli per ottimizzare il proprio lavoro. +Per creare un file script **basta un semplice [editor di testo](https://github.com/pythonitalia/python-abc/blob/master/docs/Pyllole/05_Development_Environment.md)**, nulla di più. Studiando Python è meglio evitare complessi ambienti di sviluppo (IDE), quando si conoscerà il linguaggio e si svilupperanno veri programmi, si potrà decidere di utilizzarli per ottimizzare il proprio lavoro. Il file script di python hanno estensione _.py_, crea un tuo file, chiamiamolo _prova.py_ e comincia a programmare. From ab00dc56c92a1bf372e95d2ffc9c8f994fc14bae Mon Sep 17 00:00:00 2001 From: AlexandroVassallo <36633995+AlexandroVassallo@users.noreply.github.com> Date: Tue, 8 Oct 2019 19:48:17 +0200 Subject: [PATCH 08/40] update link Lo zen di Python --- docs/Pyllole/11_Syntax.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/11_Syntax.md b/docs/Pyllole/11_Syntax.md index 05177fa..d27d7ca 100644 --- a/docs/Pyllole/11_Syntax.md +++ b/docs/Pyllole/11_Syntax.md @@ -6,7 +6,7 @@ * `Complesso è meglio di complicato` * `La leggibilità è importante` -Questi cinque principi, presi da [Lo Zen di Python](Zen.md), fanno capire quanto in Python la forma sia importante tanto quanto la sintassi. +Questi cinque principi, presi da [Lo Zen di Python](https://pythonitalia.github.io/python-abc/Pyllole/99_Zen.html), fanno capire quanto in Python la forma sia importante tanto quanto la sintassi. In Python ogni comando si scrive su una singola riga e non necessita di particolari caratteri di termine (altri linguaggi necessitano, per esempio, di `;`). Se si vogliono scrivere più comandi sulla stessa riga è possibile dividerli utilizzando il `;`, ma non farlo. From 0ae70515aefe3a028480c8884bd7b2483827c102 Mon Sep 17 00:00:00 2001 From: Angelo Turco Date: Tue, 8 Oct 2019 19:50:23 +0200 Subject: [PATCH 09/40] Update 21_Variables.md fix link file booleani --- docs/Pyllole/21_Variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/21_Variables.md b/docs/Pyllole/21_Variables.md index db214bf..c4cc781 100644 --- a/docs/Pyllole/21_Variables.md +++ b/docs/Pyllole/21_Variables.md @@ -16,7 +16,7 @@ Così nascono gli standard, dall'ASCII a UTF-8, dalle GIF alle PNG, tutti i modi Ogni linguaggio di programmazione ha i suoi tipi di dati con le proprie particolari caratteristiche, ma in generale i tipi di base sono: -* [Booleani](Type_Boolean.md): 0 o 1, chiamati anche False o True +* [Booleani](43_Type_Boolean.md): 0 o 1, chiamati anche False o True * [Numeri interi](Type_Number.md): in grado di rappresentare, a seconda del numero di byte utilizzati, i numeri interi da -N a +N * [Numeri decimali](Type_Number.md): numero in virgola mobile, indica il metodo di rappresentazione approssimata dei numeri reali * [Stringhe](Type_String.md): sequenze di caratteri (lettere, numeri e simboli) che formano un testo From 41dc86d0f10f4da82e282eda1a8ca7e125abd61d Mon Sep 17 00:00:00 2001 From: AlexandroVassallo <36633995+AlexandroVassallo@users.noreply.github.com> Date: Tue, 8 Oct 2019 19:54:34 +0200 Subject: [PATCH 10/40] update link typeNumber --- docs/Pyllole/21_Variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/21_Variables.md b/docs/Pyllole/21_Variables.md index db214bf..481bc63 100644 --- a/docs/Pyllole/21_Variables.md +++ b/docs/Pyllole/21_Variables.md @@ -18,7 +18,7 @@ Ogni linguaggio di programmazione ha i suoi tipi di dati con le proprie particol * [Booleani](Type_Boolean.md): 0 o 1, chiamati anche False o True * [Numeri interi](Type_Number.md): in grado di rappresentare, a seconda del numero di byte utilizzati, i numeri interi da -N a +N -* [Numeri decimali](Type_Number.md): numero in virgola mobile, indica il metodo di rappresentazione approssimata dei numeri reali +* [Numeri decimali](41_Type_Number.md): numero in virgola mobile, indica il metodo di rappresentazione approssimata dei numeri reali * [Stringhe](Type_String.md): sequenze di caratteri (lettere, numeri e simboli) che formano un testo Esistoni inoltre molti tipi di dati complessi, dagli array agli oggetti, ma per il momento è meglio fermarsi a questi. From 8ec9fd175ec54462be8d6bdb95366b459c495cfe Mon Sep 17 00:00:00 2001 From: Angelo Turco Date: Tue, 8 Oct 2019 19:55:44 +0200 Subject: [PATCH 11/40] Update 21_Variables.md fin link Input --- docs/Pyllole/21_Variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/21_Variables.md b/docs/Pyllole/21_Variables.md index db214bf..0fae67b 100644 --- a/docs/Pyllole/21_Variables.md +++ b/docs/Pyllole/21_Variables.md @@ -87,7 +87,7 @@ Il doppio carattere uguale `==` è sempre un operatore di uguaglianza, non una a Il _casting_ in programmazione è la conversione di un dato da un tipo ad un altro. -Potremmo avere una variabile a cui è assegnato il valore `"123", anche se sembra un numero, come già suggeriscono le virgolette, in realtà si tratta di una stringa (magari acquisita tramite [input](Input.md)). +Potremmo avere una variabile a cui è assegnato il valore `"123", anche se sembra un numero, come già suggeriscono le virgolette, in realtà si tratta di una stringa (magari acquisita tramite [input](https://github.com/pythonitalia/python-abc/blob/master/docs/Pyllole/25_Input.md). Se volessi trattare questo `"123"` come se fosse un numero, e sommargline ad esempio un altro, dovrei prima trasformalo in un intero. Per convertire in intero una stringa, o un float, si utilizza la funzione `int()`. From 1679ff985328302ae74c8b3d04ebcedb8db4b076 Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Wed, 9 Oct 2019 08:51:56 +0200 Subject: [PATCH 12/40] Update 01_Use_Python.md --- docs/Pyllole/01_Use_Python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/01_Use_Python.md b/docs/Pyllole/01_Use_Python.md index fff60b0..99284aa 100644 --- a/docs/Pyllole/01_Use_Python.md +++ b/docs/Pyllole/01_Use_Python.md @@ -107,7 +107,7 @@ Un'altro aiuto diretto nell'interprete è dato dalla funzione `dir()`, in grado Creare uno script significa creare un file contenente un programma Python. Questo file/programma potrà poi essere eseguito direttamente o importato da altri programmi. -Per creare un file script **basta un semplice [editor di testo](https://github.com/pythonitalia/python-abc/blob/master/docs/Pyllole/05_Development_Environment.md)**, nulla di più. Studiando Python è meglio evitare complessi ambienti di sviluppo (IDE), quando si conoscerà il linguaggio e si svilupperanno veri programmi, si potrà decidere di utilizzarli per ottimizzare il proprio lavoro. +Per creare un file script **basta un semplice [editor di testo](Pyllole/05_Development_Environment.md)**, nulla di più. Studiando Python è meglio evitare complessi ambienti di sviluppo (IDE), quando si conoscerà il linguaggio e si svilupperanno veri programmi, si potrà decidere di utilizzarli per ottimizzare il proprio lavoro. Il file script di python hanno estensione _.py_, crea un tuo file, chiamiamolo _prova.py_ e comincia a programmare. From 912041b13e57e532fa13a4e3f4d4cbbb87eb9900 Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Wed, 9 Oct 2019 08:55:00 +0200 Subject: [PATCH 13/40] Update 01_Use_Python.md --- docs/Pyllole/01_Use_Python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/01_Use_Python.md b/docs/Pyllole/01_Use_Python.md index 99284aa..4e9ddec 100644 --- a/docs/Pyllole/01_Use_Python.md +++ b/docs/Pyllole/01_Use_Python.md @@ -107,7 +107,7 @@ Un'altro aiuto diretto nell'interprete è dato dalla funzione `dir()`, in grado Creare uno script significa creare un file contenente un programma Python. Questo file/programma potrà poi essere eseguito direttamente o importato da altri programmi. -Per creare un file script **basta un semplice [editor di testo](Pyllole/05_Development_Environment.md)**, nulla di più. Studiando Python è meglio evitare complessi ambienti di sviluppo (IDE), quando si conoscerà il linguaggio e si svilupperanno veri programmi, si potrà decidere di utilizzarli per ottimizzare il proprio lavoro. +Per creare un file script **basta un semplice [editor di testo](05_Development_Environment.md)**, nulla di più. Studiando Python è meglio evitare complessi ambienti di sviluppo (IDE), quando si conoscerà il linguaggio e si svilupperanno veri programmi, si potrà decidere di utilizzarli per ottimizzare il proprio lavoro. Il file script di python hanno estensione _.py_, crea un tuo file, chiamiamolo _prova.py_ e comincia a programmare. From 373c58e6dc53431c3bde4a4e044bc0ed3925b3f3 Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Wed, 9 Oct 2019 08:58:42 +0200 Subject: [PATCH 14/40] Update 11_Syntax.md --- docs/Pyllole/11_Syntax.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/11_Syntax.md b/docs/Pyllole/11_Syntax.md index d27d7ca..5ebf669 100644 --- a/docs/Pyllole/11_Syntax.md +++ b/docs/Pyllole/11_Syntax.md @@ -6,7 +6,7 @@ * `Complesso è meglio di complicato` * `La leggibilità è importante` -Questi cinque principi, presi da [Lo Zen di Python](https://pythonitalia.github.io/python-abc/Pyllole/99_Zen.html), fanno capire quanto in Python la forma sia importante tanto quanto la sintassi. +Questi cinque principi, presi da [Lo Zen di Python](99_Zen.html), fanno capire quanto in Python la forma sia importante tanto quanto la sintassi. In Python ogni comando si scrive su una singola riga e non necessita di particolari caratteri di termine (altri linguaggi necessitano, per esempio, di `;`). Se si vogliono scrivere più comandi sulla stessa riga è possibile dividerli utilizzando il `;`, ma non farlo. From 84a1da0c3914c2a8335c9b5f9de709d0c928afab Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Wed, 9 Oct 2019 09:05:26 +0200 Subject: [PATCH 15/40] Update 21_Variables.md --- docs/Pyllole/21_Variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Pyllole/21_Variables.md b/docs/Pyllole/21_Variables.md index d235700..0bdd26a 100644 --- a/docs/Pyllole/21_Variables.md +++ b/docs/Pyllole/21_Variables.md @@ -17,9 +17,9 @@ Così nascono gli standard, dall'ASCII a UTF-8, dalle GIF alle PNG, tutti i modi Ogni linguaggio di programmazione ha i suoi tipi di dati con le proprie particolari caratteristiche, ma in generale i tipi di base sono: * [Booleani](43_Type_Boolean.md): 0 o 1, chiamati anche False o True -* [Numeri interi](Type_Number.md): in grado di rappresentare, a seconda del numero di byte utilizzati, i numeri interi da -N a +N +* [Numeri interi](41_Type_Number.md): in grado di rappresentare, a seconda del numero di byte utilizzati, i numeri interi da -N a +N * [Numeri decimali](41_Type_Number.md): numero in virgola mobile, indica il metodo di rappresentazione approssimata dei numeri reali -* [Stringhe](Type_String.md): sequenze di caratteri (lettere, numeri e simboli) che formano un testo +* [Stringhe](42_Type_String.md): sequenze di caratteri (lettere, numeri e simboli) che formano un testo Esistoni inoltre molti tipi di dati complessi, dagli array agli oggetti, ma per il momento è meglio fermarsi a questi. From f4c5b89a7dd58456b60402d1f4ddf28fac3c1adf Mon Sep 17 00:00:00 2001 From: Dario Date: Wed, 9 Oct 2019 09:43:18 +0200 Subject: [PATCH 16/40] Fix (many) links --- docs/Pyllole/01_Use_Python.md | 2 +- docs/Pyllole/21_Variables.md | 2 +- docs/Pyllole/25_Input.md | 8 ++++---- docs/Pyllole/27_If-Else.md | 2 +- docs/Pyllole/29_Loops.md | 4 ++-- docs/Pyllole/55_Type_Tuple.md | 4 ++-- docs/Pyllole/57_Type_Set.md | 2 +- docs/Pyllole/59_Type_Dictionary.md | 2 +- docs/Pyllole/61_Try_Except.md | 6 +++--- docs/Pyllole/63_Functions.md | 4 ++-- docs/Pyllole/71_Iterable.md | 2 +- docs/Pyllole/75_List_Comprehension.md | 2 +- docs/index.md | 2 +- 13 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/Pyllole/01_Use_Python.md b/docs/Pyllole/01_Use_Python.md index 4e9ddec..5e3e9a6 100644 --- a/docs/Pyllole/01_Use_Python.md +++ b/docs/Pyllole/01_Use_Python.md @@ -39,7 +39,7 @@ Ciao Se si utilizzano istruzioni che prevedono più linee di codice, come i cicli o la definizione di funzione, l'interprete segnalerà che non ha ancora iniziato a interpretare i comandi forniti cambiando il prompt in `...`. -Naturalmente, in questi casi, si deve fare molta attenzione all'[indentazione](Syntax.md#indentazione). +Naturalmente, in questi casi, si deve fare molta attenzione all'[indentazione](11_Syntax.md#indentazione). ```python >>> for a in range(3): diff --git a/docs/Pyllole/21_Variables.md b/docs/Pyllole/21_Variables.md index 0bdd26a..5916398 100644 --- a/docs/Pyllole/21_Variables.md +++ b/docs/Pyllole/21_Variables.md @@ -87,7 +87,7 @@ Il doppio carattere uguale `==` è sempre un operatore di uguaglianza, non una a Il _casting_ in programmazione è la conversione di un dato da un tipo ad un altro. -Potremmo avere una variabile a cui è assegnato il valore `"123", anche se sembra un numero, come già suggeriscono le virgolette, in realtà si tratta di una stringa (magari acquisita tramite [input](https://github.com/pythonitalia/python-abc/blob/master/docs/Pyllole/25_Input.md). +Potremmo avere una variabile a cui è assegnato il valore `"123", anche se sembra un numero, come già suggeriscono le virgolette, in realtà si tratta di una stringa (magari acquisita tramite [input](25_Input.md). Se volessi trattare questo `"123"` come se fosse un numero, e sommargline ad esempio un altro, dovrei prima trasformalo in un intero. Per convertire in intero una stringa, o un float, si utilizza la funzione `int()`. diff --git a/docs/Pyllole/25_Input.md b/docs/Pyllole/25_Input.md index 3c84f45..1f84d50 100644 --- a/docs/Pyllole/25_Input.md +++ b/docs/Pyllole/25_Input.md @@ -22,17 +22,17 @@ Inserisci la tua età: 42 ### Valore restituito -La funzione `input()` restituisce sempre una stringa, se si vuole utilizzare il risultato come dato numerico è necessario convertirlo utilizzando le funzioni [int() o float()](Type_Number.md). +La funzione `input()` restituisce sempre una stringa, se si vuole utilizzare il risultato come dato numerico è necessario convertirlo utilizzando le funzioni [int() o float()](41_Type_Number.md). ```python >>> stringa = input("Inserisci un numero intero: ") Inserisci un numero intero: 42 >>> numero=int(stringa) ``` -**Importante**: se la stringa passata a `int()` non è convertibile in un intero, Python genererà un'errore, è quindi consigliabile gestire l'eccezione con [try/except](Try_Except.md) +**Importante**: se la stringa passata a `int()` non è convertibile in un intero, Python genererà un'errore, è quindi consigliabile gestire l'eccezione con [try/except](61_Try_Except.md) **Nota**: nelle versioni 2.x l'attuale funzione input() si chiamava raw_input(). La funzione input() di Python2 esiste ma ha un comportamento differente da quello qui descritto. -Vedi l'esempio pratico nella pagina [try/except](Try_Except.md) per come gestire l'errata conversione. +Vedi l'esempio pratico nella pagina [try/except](61_Try_Except.md) per come gestire l'errata conversione. -Vedi l'esempio pratico nella pagina [cicli](Loops.md) per come ripetere input() finché il valore è corretto. +Vedi l'esempio pratico nella pagina [cicli](29_Loops.md) per come ripetere input() finché il valore è corretto. diff --git a/docs/Pyllole/27_If-Else.md b/docs/Pyllole/27_If-Else.md index f9d6255..79c8d13 100644 --- a/docs/Pyllole/27_If-Else.md +++ b/docs/Pyllole/27_If-Else.md @@ -4,7 +4,7 @@ In un programma le istruzioni vengono eseguite nell'ordine in cui sono scritte n Per poter eseguire una parte di questo codice solo in alcuni casi si utilizza l'istruzione di controllo `if`/`else`. -_Ricorda, in python [l'indentazione](Syntax.md#indentazione) è molto importante!_ +_Ricorda, in python [l'indentazione](11_Syntax.md#indentazione) è molto importante!_ La sintassi di base di `if` è: diff --git a/docs/Pyllole/29_Loops.md b/docs/Pyllole/29_Loops.md index 7bd0a5a..d1a92b4 100644 --- a/docs/Pyllole/29_Loops.md +++ b/docs/Pyllole/29_Loops.md @@ -1,12 +1,12 @@ # Cicli -_Prima di studiare i cicli e gli iteratori assicurati di conoscere le [liste](Type_List.md)._ +_Prima di studiare i cicli e gli iteratori assicurati di conoscere le [liste](53_Type_List.md)._ Per ripetere una determinata azione più volte e/o su più elementi si utilizzano le istruzioni `for` e `while` per costruire dei _"cicli"_. Il programma ripeterà il codice all'interno del ciclo per un numero di volte determinato da una determinata condizione. -_Ricorda, in python [l'indentazione](Syntax.md#indentazione) è molto importante!_ +_Ricorda, in python [l'indentazione](11_Syntax.md#indentazione) è molto importante!_ ## For diff --git a/docs/Pyllole/55_Type_Tuple.md b/docs/Pyllole/55_Type_Tuple.md index 02f791b..d2cfc9a 100644 --- a/docs/Pyllole/55_Type_Tuple.md +++ b/docs/Pyllole/55_Type_Tuple.md @@ -1,8 +1,8 @@ # Tipi: Tuple -_Prima di studiare le tuple assicurati di conoscere le [liste](Type_List.md)._ +_Prima di studiare le tuple assicurati di conoscere le [liste](53_Type_List.md)._ -Le tuple sono come le [liste](Type_List.md) ma immutabili. +Le tuple sono come le [liste](53_Type_List.md) ma immutabili. ```python >>> tup = (1, 2, 3) diff --git a/docs/Pyllole/57_Type_Set.md b/docs/Pyllole/57_Type_Set.md index ddd4469..fcc8b75 100644 --- a/docs/Pyllole/57_Type_Set.md +++ b/docs/Pyllole/57_Type_Set.md @@ -1,6 +1,6 @@ # Tipi: Set -_Prima di studiare i set assicurati di conoscere le [liste](Type_List.md)._ +_Prima di studiare i set assicurati di conoscere le [liste](53_Type_List.md)._ I set sono come le liste ma non possono contenere doppioni. diff --git a/docs/Pyllole/59_Type_Dictionary.md b/docs/Pyllole/59_Type_Dictionary.md index 5fe93aa..5a19f5d 100644 --- a/docs/Pyllole/59_Type_Dictionary.md +++ b/docs/Pyllole/59_Type_Dictionary.md @@ -1,6 +1,6 @@ # Tipi: Dizionari -_Prima di studiare i dizionari assicurati di conoscere le [liste](Type_List.md)._ +_Prima di studiare i dizionari assicurati di conoscere le [liste](53_Type_List.md)._ Un dizionario è come una lista che ha un nome al posto dell'indice, è un insieme di coppie chiave-valore. diff --git a/docs/Pyllole/61_Try_Except.md b/docs/Pyllole/61_Try_Except.md index 1f67267..4ae61aa 100644 --- a/docs/Pyllole/61_Try_Except.md +++ b/docs/Pyllole/61_Try_Except.md @@ -1,6 +1,6 @@ # Try - Except -_Ricorda, in python [l'indentazione](Syntax.md#indentazione) è molto importante!_ +_Ricorda, in python [l'indentazione](11_Syntax.md#indentazione) è molto importante!_ Le eccezioni (exception) sono errori rilevati durante l'esecuzione di un programma. @@ -67,7 +67,7 @@ finally: ### Esempio pratico **Conversione e controllo risultato di input()** -Se si vuole utilizzare il risultato della funzione `input()`, che è sempre una stringa, come dato numerico è necessario convertirlo utilizzando le funzioni [int() o float()](Type_Number.md). Il valore immesso potrebbe però non essere convertibile in un numero, in questo caso la funzione di conversione usata genererà un'errore che è meglio gestire. +Se si vuole utilizzare il risultato della funzione `input()`, che è sempre una stringa, come dato numerico è necessario convertirlo utilizzando le funzioni [int() o float()](41_Type_Number.md). Il valore immesso potrebbe però non essere convertibile in un numero, in questo caso la funzione di conversione usata genererà un'errore che è meglio gestire. ```python stringa = input("Inserisci un numero intero: ") @@ -77,4 +77,4 @@ except: print("Il dato inserito non è un numero intero") ``` -Vedi l'esempio pratico nella pagina [cicli](Loops.md) per come ripetere il controllo finché il valore è corretto. +Vedi l'esempio pratico nella pagina [cicli](29_Loops.md) per come ripetere il controllo finché il valore è corretto. diff --git a/docs/Pyllole/63_Functions.md b/docs/Pyllole/63_Functions.md index 5791628..cc47512 100644 --- a/docs/Pyllole/63_Functions.md +++ b/docs/Pyllole/63_Functions.md @@ -50,7 +50,7 @@ def varargs(*args): ``` All'interno della funzione la variabile `args` sarà di un tipo particolare chiamato tupla. -Questa variabile conterrà tutti i parametri passati alla funzione (leggi la pagine relativa alle [liste](Type_List.md) e alle [tuple](Type_Tuple.md)). +Questa variabile conterrà tutti i parametri passati alla funzione (leggi la pagine relativa alle [liste](53_Type_List.md) e alle [tuple](55_Type_Tuple.md)). ```python >>> varargs(1, 2, 3) @@ -65,7 +65,7 @@ def keyword_args(**kwargs): ``` All'interno della funzione la variabile `kwargs` sarà di un tipo particolare dizionario. -Questa variabili conterrà tutti i paramentri inviati come coppie chiave/valore (leggi la pagine relativa ai [dizionari](Type_Dictionary.md)). +Questa variabili conterrà tutti i paramentri inviati come coppie chiave/valore (leggi la pagine relativa ai [dizionari](59_Type_Dictionary.md)). ```python >>> keyword_args(alpha=40, beta=50) diff --git a/docs/Pyllole/71_Iterable.md b/docs/Pyllole/71_Iterable.md index a10cc92..c09e651 100644 --- a/docs/Pyllole/71_Iterable.md +++ b/docs/Pyllole/71_Iterable.md @@ -1,7 +1,7 @@ # Iterabili e Iteratori -_Prima di approfondire gli oggetti iterabili assicurati di conoscere le [liste](Type_List.md), [set](Type_Set.md) e [dizionari](Type_Dictionary.md)._ +_Prima di approfondire gli oggetti iterabili assicurati di conoscere le [liste](53_Type_List.md), [set](57_Type_Set.md) e [dizionari](59_Type_Dictionary.md)._ **In Python qualunque oggetto in grado di essere trattato come una sequenza è definito un oggetto iterable (iterabile)**. diff --git a/docs/Pyllole/75_List_Comprehension.md b/docs/Pyllole/75_List_Comprehension.md index 82467ad..1574376 100644 --- a/docs/Pyllole/75_List_Comprehension.md +++ b/docs/Pyllole/75_List_Comprehension.md @@ -1,6 +1,6 @@ # List Comprehension -_Prima di approfondire le "List Comprehension" assicurati di conoscere le [liste](Type_List.md), [set](Type_Set.md) e [dizionari](Type_Dictionary.md)._ +_Prima di approfondire le "List Comprehension" assicurati di conoscere le [liste](53_Type_List.md), [set](57_Type_Set.md) e [dizionari](59_Type_Dictionary.md)._ La sintassi per le _list comprehension_ consente, in modo semplice ed elegante, di costruire sequenze da altre sequenze. diff --git a/docs/index.md b/docs/index.md index 6d05d22..675e81e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -112,7 +112,7 @@ In questi elenchi possono essere trovati approfondimenti e documentazione relati * [Packt Publishing: Free Learning - Free Programming Ebooks](https://www.packtpub.com/packt/offers/free-learning) * [O’Reilly Media: Free Ebooks](http://www.oreilly.com/free/reports.html) * [Syncfusion: Succinctly free eBooks](https://www.syncfusion.com/ebooks) - * [Awesome Python Awesome](https://github.com/vinta/awesome-python) - list of frameworks, libraries, software and resources + * [Awesome Python](https://github.com/vinta/awesome-python) - una lista di frameworks, librerie e software * ### Video Corsi e Tutorial * ITALIANO From bffd0f7005c40283b8a4f4fa1dd5a46f28caffa4 Mon Sep 17 00:00:00 2001 From: Dario Date: Wed, 9 Oct 2019 09:57:21 +0200 Subject: [PATCH 17/40] Fix url and favicon --- docs/Pyllole/assets/favicon.png | Bin 0 -> 18566 bytes docs/index.md | 9 ++++----- 2 files changed, 4 insertions(+), 5 deletions(-) create mode 100644 docs/Pyllole/assets/favicon.png diff --git a/docs/Pyllole/assets/favicon.png b/docs/Pyllole/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c2478ba755f3df0300de225f89e3db1fe8f10388 GIT binary patch literal 18566 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 675e81e..6f701af 100644 --- a/docs/index.md +++ b/docs/index.md @@ -66,9 +66,8 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [Fundamentals of Programming Python](http://python.cs.southern.edu/pythonbook/pythonbook.pdf) * [O’Reilly Media: A Whirlwind Tour of Python](http://www.oreilly.com/programming/free/files/a-whirlwind-tour-of-python.pdf) * Packt Publishing - * [Learning Python](https://www.packtpub.com/packt/free-ebook/learning-python) - * [What You Need To Know About Python](https://www.packtpub.com/packt/free-ebook/what-you-need-know-about-python) - * [Mastering Python](https://www.packtpub.com/free-ebook/mastering-python) + * [Learning Python](https://www.packtpub.com/free-ebooks/learning-python) + * [Mastering Python](https://www.packtpub.com/free-ebooks/mastering-python) * [Python Practice Book](https://anandology.com/python-practice-book/index.html) * [Python Programming](https://upload.wikimedia.org/wikipedia/commons/9/91/Python_Programming.pdf) * [Syncfusion: Python Succinctly](https://www.syncfusion.com/ebooks/python) @@ -109,7 +108,7 @@ In questi elenchi possono essere trovati approfondimenti e documentazione relati * [Python.it - I libri su Python](http://www.python.it/doc/libri/) * INGLESE * [Free Programming Books](https://github.com/EbookFoundation/free-programming-books/blob/master/free-podcasts-screencasts-en.md#python) - * [Packt Publishing: Free Learning - Free Programming Ebooks](https://www.packtpub.com/packt/offers/free-learning) + * [Packt Publishing: Free Learning - Free Programming Ebooks](https://www.packtpub.com/free-learning) * [O’Reilly Media: Free Ebooks](http://www.oreilly.com/free/reports.html) * [Syncfusion: Succinctly free eBooks](https://www.syncfusion.com/ebooks) * [Awesome Python](https://github.com/vinta/awesome-python) - una lista di frameworks, librerie e software @@ -122,7 +121,7 @@ In questi elenchi possono essere trovati approfondimenti e documentazione relati --- -Ogni contributo è ben accetto, leggi il [codice di condotta](CODE_OF_CONDUCT.md) e la pagina con le [linee guida alla collaborazione](CONTRIBUTING.md). +Ogni contributo è ben accetto, leggi il [codice di condotta](https://github.com/pythonitalia/python-abc/blob/master/CODE_OF_CONDUCT.md) e la pagina con le [linee guida alla collaborazione](https://github.com/pythonitalia/python-abc/blob/master/CONTRIBUTING.md). Questa guida è è pubblicata con licenza [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) (Creative Commons Attribution 4.0 International) - [leggi qui i dettagli](https://github.com/pythonitalia/python-abc/blob/master/LICENSE). From 7d4a28ce4679341d40bcb7cb5d72410dbbb2f1be Mon Sep 17 00:00:00 2001 From: Dario Date: Mon, 14 Oct 2019 10:11:28 +0200 Subject: [PATCH 18/40] New video tutorial --- docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/index.md b/docs/index.md index 6f701af..9458b48 100644 --- a/docs/index.md +++ b/docs/index.md @@ -92,6 +92,7 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [Programmare in Python 2 - Marco Beri](https://www.youtube.com/playlist?list=PLC4DEDAECF24B855D) * [Amazing Python - Marco Beri](https://www.youtube.com/watch?v=O0DLSD5o5VU&list=PLu-RPGHOxmPVN7WbrlmO6Vc2gb8djB3_n) * INGLESE + * [Python for Beginners - Microsoft](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6) * [Automate the Boring Stuff with Python](https://www.youtube.com/playlist?list=PL0-84-yl1fUnRuXGFe_F7qSH1LEnn9LkW) * [Python 3.4 Programming Tutorials](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_) * [Python Programming Tutorials](https://www.youtube.com/playlist?list=PLEA1FEF17E1E5C0DA) From cd2434aede44a4b2ae4b8bf49f97dcfc2fdbd6f9 Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Tue, 26 Nov 2019 13:02:29 +0100 Subject: [PATCH 19/40] Add Tutorial Python di CodingCreativo.it --- docs/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/index.md b/docs/index.md index 9458b48..d282e04 100644 --- a/docs/index.md +++ b/docs/index.md @@ -53,7 +53,9 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [Documentazione ufficiale](http://python.it/doc/) * eBook: [Immersione in Python 3](http://gpiancastelli.altervista.org/dip3-it/) - [PDF](http://gpiancastelli.altervista.org/dip3-it/d/diveintopython3-it-pdf-latest.zip) * eBook: [ThinkPython](https://github.com/AllenDowney/ThinkPythonItalian/) -[PDF](https://github.com/AllenDowney/ThinkPythonItalian/blob/master/thinkpython_italian.pdf) + * Tutorial: [Tutorial Python di CodingCreativo.it](https://www.codingcreativo.it/tutorial-python/) * Guida: [Guida Python di HTML.IT](http://www.html.it/guide/guida-python/) + * INGLESE From 2166ad4d0aa71f1b9cdee6fd84cab7f58ca0e676 Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Thu, 27 Feb 2020 10:21:12 +0100 Subject: [PATCH 20/40] Update index.md --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index d282e04..bed5e28 100644 --- a/docs/index.md +++ b/docs/index.md @@ -14,7 +14,7 @@ Prima di voler scrivere un qualunque programma con Python è necessario conoscer * **Python.it** : [sito ufficiale italiano](http://www.python.it/) - [Forum](http://www.python.it/forum) - [Telegram](https://t.me/python_ita) - [Mailing list](http://www.python.it/comunita/mailing-list/) * **Forumpython.it**: [Sito e Forum](http://forumpython.it) -**Cerca di usare, per quanto possibile, Python 3.x**, [a breve](https://pythonclock.org) Python 2.7 non verrà più supportato. +**Nello studio e nelle ricerche fai sempre riferimento a Python 3.x**, Python 2 non è più supportato dal 1° gennaio 2020, maggiori informazioni [qui](https://www.python.org/doc/sunset-python-2/). ## Per iniziare From 2df2dbe53a45a4253b51c31ad1340e490e2c16f0 Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Fri, 7 Aug 2020 11:25:15 +0200 Subject: [PATCH 21/40] Update index.md Add "Comprehensive Python Cheatsheet" --- docs/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/index.md b/docs/index.md index bed5e28..bb72afb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -80,6 +80,8 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [Think Python 2e](http://greenteapress.com/wp/think-python-2e/) * [30 Python Language Features and Tricks You May Not Know About](http://sahandsaba.com/thirty-python-language-features-and-tricks-you-may-not-know.html) * [Building Skills in Python](http://www.itmaybeahack.com/book/python-2.6/latex/BuildingSkillsinPython.pdf) + * Cheatsheet + * [Comprehensive Python Cheatsheet](https://gto76.github.io/python-cheatsheet/) * Tutorial * [A Beginner's Python Tutorial](https://en.wikibooks.org/wiki/A_Beginner%27s_Python_Tutorial) * [Python 3 Module of the Week](https://pymotw.com) From 9261a15cf82b5ee71d3536c1cd689ee868cbcf7a Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Tue, 3 Nov 2020 10:38:43 +0100 Subject: [PATCH 22/40] Update index.md New link: "python cheatsheet" --- docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/index.md b/docs/index.md index bb72afb..3a8f79d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -81,6 +81,7 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [30 Python Language Features and Tricks You May Not Know About](http://sahandsaba.com/thirty-python-language-features-and-tricks-you-may-not-know.html) * [Building Skills in Python](http://www.itmaybeahack.com/book/python-2.6/latex/BuildingSkillsinPython.pdf) * Cheatsheet + * [Python Cheatsheet](https://www.pythoncheatsheet.org/) * [Comprehensive Python Cheatsheet](https://gto76.github.io/python-cheatsheet/) * Tutorial * [A Beginner's Python Tutorial](https://en.wikibooks.org/wiki/A_Beginner%27s_Python_Tutorial) From f648ed88f4ac7923cbfd164c4dac83049f98ee81 Mon Sep 17 00:00:00 2001 From: Draio <1090277+Draio@users.noreply.github.com> Date: Wed, 18 Nov 2020 18:03:49 +0100 Subject: [PATCH 23/40] Update index.md New link: "beginnerpythonprojects.com" --- docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/index.md b/docs/index.md index 3a8f79d..517f39a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -113,6 +113,7 @@ In questi elenchi possono essere trovati approfondimenti e documentazione relati * ITALIANO * [Python.it - I libri su Python](http://www.python.it/doc/libri/) * INGLESE + * [Python projects for beginners](https://beginnerpythonprojects.com/) * [Free Programming Books](https://github.com/EbookFoundation/free-programming-books/blob/master/free-podcasts-screencasts-en.md#python) * [Packt Publishing: Free Learning - Free Programming Ebooks](https://www.packtpub.com/free-learning) * [O’Reilly Media: Free Ebooks](http://www.oreilly.com/free/reports.html) From d9ab4c872e879f394f88e51afb6a177aac7ac2d3 Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Mon, 1 Feb 2021 09:15:37 +0100 Subject: [PATCH 24/40] Add Tutorial Python di Nicola Cassetta --- docs/index.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/index.md b/docs/index.md index 517f39a..f58e408 100644 --- a/docs/index.md +++ b/docs/index.md @@ -48,19 +48,21 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. ## Documentazione Gratuita -* ### eBook, Guide e Tutorial +* ### Tutorial, eBook e Guide Online * ITALIANO * [Documentazione ufficiale](http://python.it/doc/) - * eBook: [Immersione in Python 3](http://gpiancastelli.altervista.org/dip3-it/) - [PDF](http://gpiancastelli.altervista.org/dip3-it/d/diveintopython3-it-pdf-latest.zip) - * eBook: [ThinkPython](https://github.com/AllenDowney/ThinkPythonItalian/) -[PDF](https://github.com/AllenDowney/ThinkPythonItalian/blob/master/thinkpython_italian.pdf) - * Tutorial: [Tutorial Python di CodingCreativo.it](https://www.codingcreativo.it/tutorial-python/) - * Guida: [Guida Python di HTML.IT](http://www.html.it/guide/guida-python/) - + * Tutorial e guide online: + * [Tutorial Python di Nicola Cassetta (base e intermedio)](http://ncassetta.altervista.org/materiali-didattici.html) + * [Tutorial Python di CodingCreativo.it](https://www.codingcreativo.it/tutorial-python/) + * [Guida Python di HTML.IT](http://www.html.it/guide/guida-python/) + * eBook: + * [Immersione in Python 3](http://gpiancastelli.altervista.org/dip3-it/) - [PDF](http://gpiancastelli.altervista.org/dip3-it/d/diveintopython3-it-pdf-latest.zip) + * [ThinkPython](https://github.com/AllenDowney/ThinkPythonItalian/) -[PDF](https://github.com/AllenDowney/ThinkPythonItalian/blob/master/thinkpython_italian.pdf) * INGLESE * Python 3 Official Documentation - * [Documentation](https://docs.python.org/3/download.html) + * [Documentation](https://www.python.org/doc/) * [Tutorial](https://docs.python.org/3/tutorial/index.html) * E-book * [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) From a7e4dcdeb56f9d8fa383f0eff85b7ea66b62045e Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Thu, 9 Dec 2021 11:59:12 +0100 Subject: [PATCH 25/40] Rimuovo riferimenti a Python 2 --- docs/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index f58e408..be369ae 100644 --- a/docs/index.md +++ b/docs/index.md @@ -79,7 +79,7 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [The Hitchhiker’s Guide to Python!](http://docs.python-guide.org/en/latest/) * [Python 101](https://leanpub.com/python_101) * [Intermediate Python](https://leanpub.com/intermediatepython) - * [Think Python 2e](http://greenteapress.com/wp/think-python-2e/) + * [Think Python 2 edition](http://greenteapress.com/wp/think-python-2e/) * [30 Python Language Features and Tricks You May Not Know About](http://sahandsaba.com/thirty-python-language-features-and-tricks-you-may-not-know.html) * [Building Skills in Python](http://www.itmaybeahack.com/book/python-2.6/latex/BuildingSkillsinPython.pdf) * Cheatsheet @@ -96,7 +96,6 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [Video Corso Python 3 - Impara a Programmare in Python 3.6](https://www.youtube.com/playlist?list=PLHUQL6-_n9Zes1VLMgJbLa8IIOHT9x4Nu) * [Python 3.6 Tutorial Italiano - Programmazione a Oggetti - Classi e Istanze](https://www.youtube.com/watch?v=nmoJf-Ei4TA&list=PLHUQL6-_n9ZdD3JMKg4On4NFh8bBg3Ckn) * [ProgrammareInPython.it - Video Corsi e Esercizi](https://www.programmareinpython.it/programmare-in-python/) - * [Programmare in Python 2 - Marco Beri](https://www.youtube.com/playlist?list=PLC4DEDAECF24B855D) * [Amazing Python - Marco Beri](https://www.youtube.com/watch?v=O0DLSD5o5VU&list=PLu-RPGHOxmPVN7WbrlmO6Vc2gb8djB3_n) * INGLESE * [Python for Beginners - Microsoft](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6) From bfdcd2b88adca904d02643159c80d2c9bcac491f Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Thu, 9 Dec 2021 12:01:43 +0100 Subject: [PATCH 26/40] Rimuovo riferimenti a Python 2 --- docs/Pyllole/00_Install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/00_Install.md b/docs/Pyllole/00_Install.md index 21ae32e..2b73aa4 100644 --- a/docs/Pyllole/00_Install.md +++ b/docs/Pyllole/00_Install.md @@ -9,7 +9,7 @@ Il modo più semplice per sapere se il tuo sistema ha già installato Python è Per installare Python scarica la versione più recente dal sito ufficiale: [https://www.python.org/downloads/](https://www.python.org/downloads/) -**Ricorda, [a breve](https://pythonclock.org) Python 2.7 non verrà più supportato.** +**Ricorda, Python 2 non è più supportato dal 1° gennaio 2020, maggiori informazioni i [qui](https://www.python.org/doc/sunset-python-2/).** --- From 7176716c84a42c8ace151ae2b4c6ec395ac270a2 Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Thu, 9 Dec 2021 12:04:06 +0100 Subject: [PATCH 27/40] aggiorno riferimenti a Python 2 --- docs/Pyllole/01_Use_Python.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/Pyllole/01_Use_Python.md b/docs/Pyllole/01_Use_Python.md index 5e3e9a6..4de80f3 100644 --- a/docs/Pyllole/01_Use_Python.md +++ b/docs/Pyllole/01_Use_Python.md @@ -11,7 +11,10 @@ Una volta installato Python ci sono due fondamentali modi per utilizzarlo: Eseguendo direttamente Python viene attivata la modalità intereattiva dell'interprete (REPL), un'interfaccia per scrivere ed eseguire immediatamente i comandi del linguaggio Python. Il REPL si presenta semplicemente con un _prompt_ `>>>` in attesa di un comando. -A seconda di come, cosa e dove è stato installato Python, potrebbe essere necessario specificare quale versione si vuole eseguire. Ad oggi molte versioni pre-installate eseguono Python 2.7 di default, in questi casi è necessario specificare `python3` per eseguire l'ultima versione. +A seconda di come, cosa e dove è stato installato Python, potrebbe essere necessario specificare quale versione si vuole eseguire. +In alcuni sistemi obsoleti potresti trovar installato Python 2, in questi casi è necessario specificare `python3` per eseguire l'ultima versione. + +**Ricorda, Python 2 non è più supportato dal 1° gennaio 2020, maggiori informazioni [qui](https://www.python.org/doc/sunset-python-2/).** ``` $ python From a5200caf2b5ebe4ae139cfc89c0d1d0b4c299d9a Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Thu, 9 Dec 2021 12:09:58 +0100 Subject: [PATCH 28/40] Rimuovo riferimenti a Python 2 --- docs/Pyllole/23_Print.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/23_Print.md b/docs/Pyllole/23_Print.md index c875e56..985224a 100644 --- a/docs/Pyllole/23_Print.md +++ b/docs/Pyllole/23_Print.md @@ -1,6 +1,6 @@ # Print -La funzione `print()` permette di scrivere sulla vostra console delle stringhe (in Python 2.7 non era una funzione ma un'istruzione built-in del linguaggio che non richiedeva le parentesi). +La funzione `print()` permette di scrivere sulla vostra console delle stringhe (sequenze di caratteri). ```python >>> print("Ciao, questa è una stringa.") From 660ef0436a4cdc8168dfaa4f0d379db3e727b80a Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Thu, 9 Dec 2021 12:12:26 +0100 Subject: [PATCH 29/40] Update 01_Use_Python.md --- docs/Pyllole/01_Use_Python.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/Pyllole/01_Use_Python.md b/docs/Pyllole/01_Use_Python.md index 4de80f3..33a51eb 100644 --- a/docs/Pyllole/01_Use_Python.md +++ b/docs/Pyllole/01_Use_Python.md @@ -14,8 +14,6 @@ Eseguendo direttamente Python viene attivata la modalità intereattiva dell'inte A seconda di come, cosa e dove è stato installato Python, potrebbe essere necessario specificare quale versione si vuole eseguire. In alcuni sistemi obsoleti potresti trovar installato Python 2, in questi casi è necessario specificare `python3` per eseguire l'ultima versione. -**Ricorda, Python 2 non è più supportato dal 1° gennaio 2020, maggiori informazioni [qui](https://www.python.org/doc/sunset-python-2/).** - ``` $ python Python 2.7.13 (default, Nov 24 2017, 17:33:09) @@ -31,6 +29,7 @@ Python 3.5.3 (default, Jan 19 2017, 14:11:04) Type "help", "copyright", "credits" or "license" for more information. >>> ``` +**Ricorda, Python 2 non è più supportato dal 1° gennaio 2020, maggiori informazioni [qui](https://www.python.org/doc/sunset-python-2/).** All'interno dell'interprete è possibile inviare comandi Python che vengono eseguiti man mano che vengono scritti (riga per riga). From 6115775c596d88c633790327c17383ef462a7414 Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Tue, 18 Oct 2022 10:35:13 +0200 Subject: [PATCH 30/40] Fix type --- docs/Pyllole/29_Loops.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/29_Loops.md b/docs/Pyllole/29_Loops.md index d1a92b4..51b72c3 100644 --- a/docs/Pyllole/29_Loops.md +++ b/docs/Pyllole/29_Loops.md @@ -95,7 +95,7 @@ Nel seguente esempio ripetiamo la richiesta finché a `numero` non viene assegna numero=None while not numero: try: - numero=int(input("Inserisci un numero intero: ")) + numero=int(input("Inserisci un numero intero: ")) except: print("Il dato inserito non è un numero intero") ``` From 5bec2e8613c823725c80db72049233c47d3d7a1e Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Tue, 18 Oct 2022 10:37:02 +0200 Subject: [PATCH 31/40] Fix typo --- docs/Pyllole/29_Loops.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/29_Loops.md b/docs/Pyllole/29_Loops.md index 51b72c3..be39364 100644 --- a/docs/Pyllole/29_Loops.md +++ b/docs/Pyllole/29_Loops.md @@ -85,7 +85,7 @@ while x < 4: ### Esempio pratico **Ciclo while per riproporre la richiesta di dati in caso di errore di immissione** -La funzione `input()` acqusisce un valore inserito da tastiera in formato stringa. A volte è necessario che il dato acquisito sia un numero, in questi casi si utilizzano le funzioni `int()` o `float()` per convertirlo. +La funzione `input()` acquisisce un valore inserito da tastiera in formato stringa. A volte è necessario che il dato acquisito sia un numero, in questi casi si utilizzano le funzioni `int()` o `float()` per convertirlo. Si può quindi utilizzare `try`/`except` per controllare che sia stato inserito un dato valido, ma per riproporre la domanda in caso di errore è necessario creare un ciclo. From 6d8f7e69748e313153f925c4e11eb8e033e76901 Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Mon, 28 Nov 2022 10:04:40 +0100 Subject: [PATCH 32/40] Remove wrong link --- docs/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index be369ae..6242959 100644 --- a/docs/index.md +++ b/docs/index.md @@ -89,7 +89,6 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * [A Beginner's Python Tutorial](https://en.wikibooks.org/wiki/A_Beginner%27s_Python_Tutorial) * [Python 3 Module of the Week](https://pymotw.com) * [A Byte of Python](https://python.swaroopch.com/first_steps.html) - * [CodeCademy: Python](https://www.codecademy.com/learn/python) * ### Video Corsi e Tutorial * ITALIANO From ca93c2801d208ef6956a5676c08bcfd6135395a6 Mon Sep 17 00:00:00 2001 From: Carlo Miron Date: Thu, 18 Jan 2024 13:27:28 +0100 Subject: [PATCH 33/40] Update 42_Type_String.md make John Upper --- docs/Pyllole/42_Type_String.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Pyllole/42_Type_String.md b/docs/Pyllole/42_Type_String.md index 78e323f..6b59f07 100644 --- a/docs/Pyllole/42_Type_String.md +++ b/docs/Pyllole/42_Type_String.md @@ -100,7 +100,7 @@ Con le _f-string_ è possibile anche eseguire delle espressioni all'interno del >>> seven = 7 >>> f'''Il suo nome è {name.upper()} ...ed ha {6 * seven} anni.''' -'Il suo nome è John ed ha 42 anni.' +'Il suo nome è JOHN ed ha 42 anni.' ``` From 4542d29f8660ac12bba4cd9058e4398c1aa8beed Mon Sep 17 00:00:00 2001 From: Dag7 Date: Tue, 25 Jun 2024 12:58:14 +0200 Subject: [PATCH 34/40] Fix Books link (#19) * Aggiornato link Oreilly e link EbookFoundation * Sistemato link EbookFoundation --- docs/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index 6242959..6ced177 100644 --- a/docs/index.md +++ b/docs/index.md @@ -114,9 +114,9 @@ In questi elenchi possono essere trovati approfondimenti e documentazione relati * [Python.it - I libri su Python](http://www.python.it/doc/libri/) * INGLESE * [Python projects for beginners](https://beginnerpythonprojects.com/) - * [Free Programming Books](https://github.com/EbookFoundation/free-programming-books/blob/master/free-podcasts-screencasts-en.md#python) + * [Free Programming Books](https://github.com/EbookFoundation/free-programming-books/blob/main/casts/free-podcasts-screencasts-en.md#python) * [Packt Publishing: Free Learning - Free Programming Ebooks](https://www.packtpub.com/free-learning) - * [O’Reilly Media: Free Ebooks](http://www.oreilly.com/free/reports.html) + * [O’Reilly: Open Books](https://www.oreilly.com/openbook/) * [Syncfusion: Succinctly free eBooks](https://www.syncfusion.com/ebooks) * [Awesome Python](https://github.com/vinta/awesome-python) - una lista di frameworks, librerie e software @@ -124,7 +124,7 @@ In questi elenchi possono essere trovati approfondimenti e documentazione relati * ITALIANO * [Python.it - Media](http://python.it/doc/media/) * INGLESE - * [Free Python Podcasts and Screencasts](https://github.com/EbookFoundation/free-programming-books/blob/master/free-podcasts-screencasts-en.md#python) + * [Free Python Podcasts and Screencasts](https://github.com/EbookFoundation/free-programming-books/blob/main/casts/free-podcasts-screencasts-en.md) --- From 61cbbaa9b696c9d53f7baa3532a7faf1b81e7c52 Mon Sep 17 00:00:00 2001 From: Muflone Date: Mon, 20 Jan 2025 08:28:24 +0100 Subject: [PATCH 35/40] Fixed missing indentation and minor typos (#20) * Fixed missing indentation * Fixed typo * Other typos --- docs/Pyllole/81_Classes.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/Pyllole/81_Classes.md b/docs/Pyllole/81_Classes.md index d7548fd..a685873 100644 --- a/docs/Pyllole/81_Classes.md +++ b/docs/Pyllole/81_Classes.md @@ -20,10 +20,10 @@ class Human: # Assegna l'argomento all'attributo name dell'istanza self.name = name - # Inizializza una proprietà - self._age = 0 + # Inizializza una proprietà + self._age = 0 - # Un metodo dell'istanza. Tutti i metodi prendo "self" + # Un metodo dell'istanza. Tutti i metodi prendono "self" # come primo argomento def say(self, msg): print("{name}: {message}".format(name=self.name, message=msg)) @@ -45,7 +45,7 @@ class Human: return "*grunt*" # Una property è come un metodo getter. - # Trasforma il metodo age() in un attributo in sola lettura, + # Trasforma il metodo age() in un attributo in sola lettura, # che ha lo stesso nome @property def age(self): @@ -94,7 +94,7 @@ if __name__ == '__main__': i.age = 42 # Leggi la property i.say(i.age) # => "Ian: 42" - j.say(j.age) # => "Joel: 0" + j.say(j.age) # => "Joel: 0" # Cancella la property del i.age i.age # => questo genererà un AttributeError From c52ab3692f218b42aabe973e0bf3a41a32d418dc Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Mon, 20 Jan 2025 08:42:29 +0100 Subject: [PATCH 36/40] Update 81_Classes.md Corretta un'errata informazione --- docs/Pyllole/81_Classes.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/Pyllole/81_Classes.md b/docs/Pyllole/81_Classes.md index a685873..1d6012f 100644 --- a/docs/Pyllole/81_Classes.md +++ b/docs/Pyllole/81_Classes.md @@ -84,11 +84,9 @@ if __name__ == '__main__': # Chiama un metodo statico print(Human.grunt()) # => "*grunt*" - - # Non è possibile chiamare il metodo statico con l'istanza dell'oggetto - # poiché i.grunt() metterà automaticamente "self" (l'oggetto i) - # come argomento - print(i.grunt()) # => TypeError: grunt() takes 0 positional arguments but 1 was given + + # I metodi statici possono essere chiamati anche dalle istanze + print(i.grunt()) # => "*grunt*" # Aggiorna la property (age) di questa istanza i.age = 42 From 8f72887844d45b6564f6f9b84c24bd221c692d71 Mon Sep 17 00:00:00 2001 From: Peter Bittner Date: Sat, 21 Jun 2025 15:20:16 +0200 Subject: [PATCH 37/40] Remove ForumPython (domain expired) (#22) As of today, the website appears to be offline and a domain parking page is displayed instead. --- docs/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 6ced177..bc91d62 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,7 +12,6 @@ Prima di voler scrivere un qualunque programma con Python è necessario conoscer ## Principali Riferimenti Online * **Python.org**: [il sito ufficiale in inglese](https://docs.python.org) * **Python.it** : [sito ufficiale italiano](http://www.python.it/) - [Forum](http://www.python.it/forum) - [Telegram](https://t.me/python_ita) - [Mailing list](http://www.python.it/comunita/mailing-list/) -* **Forumpython.it**: [Sito e Forum](http://forumpython.it) **Nello studio e nelle ricerche fai sempre riferimento a Python 3.x**, Python 2 non è più supportato dal 1° gennaio 2020, maggiori informazioni [qui](https://www.python.org/doc/sunset-python-2/). From d45e2d98072a2433d2f3e250c3bd80eda25cf945 Mon Sep 17 00:00:00 2001 From: Kevin <36989197+KevinSpek@users.noreply.github.com> Date: Wed, 21 Oct 2026 09:39:36 +0300 Subject: [PATCH 38/40] Sostituisce trinket.io (chiuso) con un compilatore online funzionante (#23) trinket.io ha chiuso ad agosto 2026. --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index bc91d62..94e2fdc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -43,7 +43,7 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * Per condividere il tuo codice, in un forum o chat, usa un servizio per la condivisione del codice * [hastebin](https://hastebin.com) - [arin.ga](https://arin.ga) - [dpaste.de](https://dpaste.de) * Puoi provare il tuo codice, senza installare nulla sul tuo PC, usando un compilatore online - * [Judge0 IDE](https://ide.judge0.com) - [trinket.io](https://trinket.io) - [repl.it](https://repl.it/) + * [Judge0 IDE](https://ide.judge0.com) - [Coddy](https://coddy.tech/playground/it/python) - [repl.it](https://repl.it/) ## Documentazione Gratuita From 036b003acde5ab2f0c41af43aa214ef68140f27c Mon Sep 17 00:00:00 2001 From: Ardius <1090277+Ardius@users.noreply.github.com> Date: Wed, 21 Oct 2026 08:42:15 +0200 Subject: [PATCH 39/40] Adds the community-hosted Trinket version --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 94e2fdc..5d90cb2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -43,7 +43,7 @@ Le Pyllole sono brevi e semplici spiegazioni relative al linguaggio Python 3. * Per condividere il tuo codice, in un forum o chat, usa un servizio per la condivisione del codice * [hastebin](https://hastebin.com) - [arin.ga](https://arin.ga) - [dpaste.de](https://dpaste.de) * Puoi provare il tuo codice, senza installare nulla sul tuo PC, usando un compilatore online - * [Judge0 IDE](https://ide.judge0.com) - [Coddy](https://coddy.tech/playground/it/python) - [repl.it](https://repl.it/) + * [Judge0 IDE](https://ide.judge0.com) - [trinket.strivemath.org](https://trinket.strivemath.org/python3) - [repl.it](https://repl.it/) - [Coddy](https://coddy.tech/playground/it/python) ## Documentazione Gratuita From 2f31a7ddc8e759e1ce431527b594cfe6e576f14c Mon Sep 17 00:00:00 2001 From: Dario Date: Wed, 21 Oct 2026 10:12:08 +0200 Subject: [PATCH 40/40] Corregge errori e imprecisioni --- docs/Pyllole/05_Development_Environment.md | 10 +-- docs/Pyllole/11_Syntax.md | 2 +- docs/Pyllole/21_Variables.md | 35 +++++----- docs/Pyllole/29_Loops.md | 41 ++++++------ docs/Pyllole/53_Type_List.md | 2 +- docs/Pyllole/59_Type_Dictionary.md | 28 ++++---- docs/Pyllole/63_Functions.md | 65 ++++++++++--------- docs/Pyllole/71_Iterable.md | 1 - docs/Pyllole/83_Inheritance.md | 75 +++++++++++----------- docs/Pyllole/85_Inheritance_Multiple.md | 50 +++++++-------- 10 files changed, 154 insertions(+), 155 deletions(-) diff --git a/docs/Pyllole/05_Development_Environment.md b/docs/Pyllole/05_Development_Environment.md index 2a4f572..2009cf4 100644 --- a/docs/Pyllole/05_Development_Environment.md +++ b/docs/Pyllole/05_Development_Environment.md @@ -4,7 +4,7 @@ ## L'editor di testo Il fondamentale, e più usato, strumento di ogni programmatore è l'_editor di testo_, un programma in grado di creare e modificare file, testuali appunto, contenenti il codice sorgente dei programmi. -Un file testuale è un file che contiente solo ed esclusivamente byte che verranno interpretati come caratteri di testo. +Un file testuale è un file che contiente solo ed esclusivamente byte che verranno interpretati come caratteri di testo. Un editori di testo non è un [IDE](#IDE), inizia a programmare con un semplice editor di testo e passa ad un [IDE](#IDE) solo quando avrai più esperienza. @@ -15,10 +15,10 @@ Un editori di testo non è un [IDE](#IDE), inizia a programmare con un semplice Naturalmente qualunque editor di testo in grado semplicemente di creare, aprire e modificare un file di testo ti permetterà di scrivere il tuo codice. Ci sono poi altre caratteristiche che ti renderanno la vita più semplice nelle ore che passerai a scrivere. -* Funzioni di ricerca e sostituzione +* Funzioni di ricerca e sostituzione * Funzioni per tagliare, copiare e incollare vRappresentazione a colori ([syntax highlighting](https://it.wikipedia.org/wiki/Syntax_highlighting)) del codice -* Possibilità di aggiungere funzionalità dell'editor tramite _plugin_ +* Possibilità di aggiungere funzionalità dell'editor tramite _plugin_ * Personalizzazione (dimensione del carattere, combinazioni di colori, ecc) **Nota**: oggi è quasi obbligatorio che un editor di testo supporti la [codifica UTF-8](https://it.wikipedia.org/wiki/UTF-8). @@ -26,14 +26,14 @@ vRappresentazione a colori ([syntax highlighting](https://it.wikipedia.org/wiki/ ### Linea di comando -Se si programma per lavoro prima o poi Linux si dovrà utilizzare, per questo è fondamentale conoscere i suoi editor testuali da linea di comando: `vim` e `nano`. +Lavorando su Linux può essere utile conoscere editor da terminale come `vim` e `nano`. Entrambi, funzionando in modalità testuale (non grafica) e possono sembrare un po' ostici. Tutti i comandi (esci, salva, cerca, ...) vengono attivati tramite combinazioni di tasti, il mouse, se siete fortunati, può essere utilizzato per selezionare un testo e copiarlo. Tra i due `nano` è probabilmente il più semplice, si scrive direttamente sul "foglio" e in una barra vengono indicati i comandi principali, con `^` che indica il tasto `ctrl` (`ctrl+x` esce, `ctrl+o` salva, `ctrl+w` cerca). -### I più diffusi editor di testo (ambiente grafico) +### I più diffusi editor di testo (ambiente grafico) * [Sublime Text](https://www.sublimetext.com/) * [Atom](https://atom.io) diff --git a/docs/Pyllole/11_Syntax.md b/docs/Pyllole/11_Syntax.md index 5ebf669..56640d7 100644 --- a/docs/Pyllole/11_Syntax.md +++ b/docs/Pyllole/11_Syntax.md @@ -111,7 +111,7 @@ mia_var="pippo" ```python #! /usr/bin/python3 -def mia_funzione(*args) +def mia_funzione(*args): """ Questa funzione restituisce ... Gli argomenti ... """ diff --git a/docs/Pyllole/21_Variables.md b/docs/Pyllole/21_Variables.md index 5916398..ade535c 100644 --- a/docs/Pyllole/21_Variables.md +++ b/docs/Pyllole/21_Variables.md @@ -21,7 +21,7 @@ Ogni linguaggio di programmazione ha i suoi tipi di dati con le proprie particol * [Numeri decimali](41_Type_Number.md): numero in virgola mobile, indica il metodo di rappresentazione approssimata dei numeri reali * [Stringhe](42_Type_String.md): sequenze di caratteri (lettere, numeri e simboli) che formano un testo -Esistoni inoltre molti tipi di dati complessi, dagli array agli oggetti, ma per il momento è meglio fermarsi a questi. +Esistono inoltre molti tipi di dati complessi, dagli array agli oggetti, ma per il momento è meglio fermarsi a questi. ## Le variabili @@ -34,30 +34,29 @@ Più o meno in tutti i linguaggi di programmazione, per assegnare un valore ad u nome="Pippo" ``` -In realtà **una variabile non è _il contenitore_ ma solo un soprannome che si dà ad una zona di memoria**. +In realtà **una variabile non è _il contenitore_ ma solo un soprannome che si dà ad una zona di memoria**. -In Python, per gran parte dei tipi, assegnare un nuovo valore ad una variabile non vuol dire modificare il valore di una zona di memoria, ma far "puntare" il nostro "soprannome" ad una nuova zona di memoria con un nuovo contenuto. +In Python, per gran parte dei tipi, assegnare un nuovo valore ad una variabile non vuol dire modificare il valore di una zona di memoria, ma far "puntare" il nostro "soprannome" ad una nuova zona di memoria con un nuovo contenuto. Questa operazione è del tutto trasparente per il programmatore, ma è una cosa molto importante da sapere quando si realizzano programmi in cui le performance contano. -_Per uteriori informazioni su questo argomento cercare in rete "[Python immutable types](https://www.google.it/search?q=python+immutable+types)"_ +_Per ulteriori informazioni su questo argomento cercare in rete "[Python immutable types](https://www.google.it/search?q=python+immutable+types)"_ ### Nomi e convenzioni delle variabili -In Python i nomi delle variabili possono essere di qualsiasi lunghezza e possono usare lettere maiuscole o minuscole, il carattere di sottolineatura `_` e le cifre da 0 a 9. -I nomi delle variabili non possono iniziare con una cifra e non possono essere uguali alla parole riservate del linguaggio Python, come ad esempio `if`, `else`, `and`. -I nomi delle variabili sono case sensitive, cioé i caratteri maiuscoli e quelli minuscoli sono considerati come se fossere due lettere differenti. Quindi `nome` e `Nome` sono considerate due variabili differenti. +In Python i nomi delle variabili possono essere di qualsiasi lunghezza e possono usare lettere maiuscole o minuscole, il carattere di sottolineatura `_` e le cifre da 0 a 9. +I nomi delle variabili non possono iniziare con una cifra e non possono essere uguali alle parole riservate del linguaggio Python, come ad esempio `if`, `else`, `and`. +I nomi delle variabili sono case sensitive, cioè i caratteri maiuscoli e quelli minuscoli sono considerati come se fossero due lettere differenti. Quindi `nome` e `Nome` sono considerate due variabili differenti. -Infine, come convenzione per migliorare la leggibilità del codice, si suggerisce di dare alle variabili un **nome minuscolo con le eventuali parole separate dal carattere di sottolineatura `_`**. +Infine, come convenzione per migliorare la leggibilità del codice, si suggerisce di dare alle variabili un **nome minuscolo con le eventuali parole separate dal carattere di sottolineatura `_`**. ### Tipizzazione -Il programma, quando viene eseguito, deve sapere quanto spazio di memoria dovrà "assegnare" ad una variabile. Lo spazio utilizzato da un numero intero è differente da quello utilizzato da una stringa. -Per questo molti linguaggi di programmazione necessitano che una variabile sia inizializzata, prima di essere utilizzata, assegnandogli un determinato tipo. Questi linguaggi si definiscono _tipizzati_. +Il tipo di un dato determina quali operazioni si possono eseguire su di esso. Per esempio, sommare due numeri è diverso dal concatenare due stringhe. -**Python è un linguaggio tipizzato dinamicamente**, non c'é bisogno di inizializzare una variabile prima di utilizzarla, è possibile cambiare tipo alla variabile in qualunque momento semplicemente assegnandogli un differente valore. +**Python è un linguaggio tipizzato dinamicamente**: non serve dichiarare in anticipo il tipo di una variabile. Il tipo appartiene all’oggetto a cui il nome si riferisce, e lo stesso nome può essere associato successivamente a oggetti di tipo diverso. Prima di leggere una variabile, però, è necessario averle assegnato un valore. -Di seguito assegnamo valori differenti alla variabile nome ed utiliziamo la funzione `type()` per vedere che cambia tipo senza alcun problema. +Di seguito associamo al nome `nome` prima una stringa e poi un intero. Utilizziamo la funzione `type()` per conoscere il tipo dell’oggetto a cui si riferisce. ```python >>> nome="Pippo" @@ -77,19 +76,19 @@ Di seguito assegnamo valori differenti alla variabile nome ed utiliziamo la funz ... Traceback (most recent call last): File "", line 1, in -NameError: name 'a' is not defined +NameError: name 'my_var' is not defined ``` -**Importante**: qui sopra abbiamo anticipato un esempio di controllo `if` in cui c'é `my_var==2`. -Il doppio carattere uguale `==` è sempre un operatore di uguaglianza, non una assegnazione (vedere [operatori booleani]()). +**Importante**: qui sopra abbiamo anticipato un esempio di controllo `if` in cui c’è `my_var==2`. +Il doppio carattere uguale `==` è sempre un operatore di uguaglianza, non una assegnazione (vedere [operatori di confronto](43_Type_Boolean.md)). ### Casting Il _casting_ in programmazione è la conversione di un dato da un tipo ad un altro. -Potremmo avere una variabile a cui è assegnato il valore `"123", anche se sembra un numero, come già suggeriscono le virgolette, in realtà si tratta di una stringa (magari acquisita tramite [input](25_Input.md). +Potremmo avere una variabile a cui è assegnato il valore `"123"`, anche se sembra un numero, le virgolette indicano che è una stringa, magari acquisita tramite [input](25_Input.md). -Se volessi trattare questo `"123"` come se fosse un numero, e sommargline ad esempio un altro, dovrei prima trasformalo in un intero. +Se volessi trattare questo `"123"` come se fosse un numero, e sommargline ad esempio un altro, dovrei prima trasformarlo in un intero. Per convertire in intero una stringa, o un float, si utilizza la funzione `int()`. ``` @@ -103,5 +102,5 @@ C'è una funzione di casting per ogni tipo di dato, molto usate sono, ad esempio ## Tutto è un oggetto Senza voler anticipare concetti troppo avanzati, sappi solo che in Python ogni tipo è un oggetto. -Se in altri linguaggi una stringa è solo uno spazio contenente i byte relativi ai caratteri che la compongono, in Python è un oggetto più complesso con relativi medoti e proprietà. +Se in altri linguaggi una stringa è solo uno spazio contenente i byte relativi ai caratteri che la compongono, in Python è un oggetto più complesso con relativi metodi e proprietà. diff --git a/docs/Pyllole/29_Loops.md b/docs/Pyllole/29_Loops.md index be39364..3cafad7 100644 --- a/docs/Pyllole/29_Loops.md +++ b/docs/Pyllole/29_Loops.md @@ -11,26 +11,26 @@ _Ricorda, in python [l'indentazione](11_Syntax.md#indentazione) è molto importa ## For -I cicli `for` iterano sulle liste, cioé ripetono un codice per ogni elemento all'interno di una lista. +I cicli `for` scorrono gli elementi di un oggetto iterabile, per esempio una lista, ripetendo il codice per ogni elemento. Il seguente codice: ```python -for animale in ["cane", "gatto", "topo"]: +for animale in ["cane", "gatto", "topo"]: print ("{0} è un mammifero".format(animale)) ``` Genera il seguente risultato: ```python -cane è un mammifero +cane è un mammifero gatto è un mammifero topo è un mammifero ``` -I cicli for posso iterare anche dal risultato di una funzione `range()`. +I cicli `for` possono scorrere anche i numeri rappresentati da un oggetto `range`. -Infatti `range(numero)` restituisce una lista di numeri da zero al numero dato +`range(stop)` restituisce un oggetto `range` che rappresenta una sequenza di numeri interi a partire da `0`, fino a `stop` escluso, con passo `1`. Per esempio, `range(4)` rappresenta i numeri `0`, `1`, `2`, `3`. Il codice: @@ -41,19 +41,19 @@ for i in range(4): Scriverà: ```python -0 +0 1 2 3 ``` -La funzione `range()` ha anche altri paramentri opzionali. +La funzione `range()` permette di specificare anche il valore iniziale e il passo. -`range(lower, upper)` restituisce una lista di numeri dal più piccolo `lower` al più grande `upper`. +`range(start, stop)` rappresenta una sequenza di interi a partire da `start`, fino a `stop` escluso, con passo `1`. -`range(lower, upper, step)` restituisce una lista di numeri dal più piccolo `lower` al più grande `upper` incrementando del valore `step`. +`range(start, stop, step)` permette di specificare il passo, che può essere positivo o negativo, ma non zero. Il valore finale `stop` è sempre escluso. -Il codice: +Il codice: ```python for i in range(10,30,5): @@ -63,7 +63,7 @@ for i in range(10,30,5): Scriverà: ```python -10 +10 15 20 25 @@ -71,13 +71,13 @@ Scriverà: ## While -I cicli `while` vengono eseguiti finchè la condizione indicata viene a mancare. +I cicli `while` ripetono il codice finché la condizione indicata è vera. ```python -x = 0 +x = 0 while x < 4: print(x) - x += 1 + x += 1 ``` **Nota**: La sintassi `x += 1` è la versione compatta di `x = x+1` @@ -85,18 +85,19 @@ while x < 4: ### Esempio pratico **Ciclo while per riproporre la richiesta di dati in caso di errore di immissione** -La funzione `input()` acquisisce un valore inserito da tastiera in formato stringa. A volte è necessario che il dato acquisito sia un numero, in questi casi si utilizzano le funzioni `int()` o `float()` per convertirlo. +La funzione `input()` acquisisce un valore inserito da tastiera in formato stringa. A volte è necessario che il dato acquisito sia un numero, in questi casi si utilizzano le funzioni `int()` o `float()` per convertirlo. Si può quindi utilizzare `try`/`except` per controllare che sia stato inserito un dato valido, ma per riproporre la domanda in caso di errore è necessario creare un ciclo. -Nel seguente esempio ripetiamo la richiesta finché a `numero` non viene assegnato un valore. +Nel seguente esempio ripetiamo la richiesta finché `numero` è `None`, cioè finché non è stato acquisito un intero valido. Se la conversione fallisce, viene gestita l’eccezione `ValueError` e `numero` rimane `None`. Anche `0` è un valore intero valido e permette di terminare il ciclo. ```python -numero=None -while not numero: +numero = None + +while numero is None: try: - numero=int(input("Inserisci un numero intero: ")) - except: + numero = int(input("Inserisci un numero intero: ")) + except ValueError: print("Il dato inserito non è un numero intero") ``` diff --git a/docs/Pyllole/53_Type_List.md b/docs/Pyllole/53_Type_List.md index 29b4f16..f72fefe 100644 --- a/docs/Pyllole/53_Type_List.md +++ b/docs/Pyllole/53_Type_List.md @@ -26,7 +26,7 @@ Si può aggiungere un valore alla fine della lista con append ```python >>> li.append(10) >>> li -[7] +[10] >>> li.append(20) >>> li.append(30) >>> li.append(40) diff --git a/docs/Pyllole/59_Type_Dictionary.md b/docs/Pyllole/59_Type_Dictionary.md index 5a19f5d..07e3814 100644 --- a/docs/Pyllole/59_Type_Dictionary.md +++ b/docs/Pyllole/59_Type_Dictionary.md @@ -2,9 +2,9 @@ _Prima di studiare i dizionari assicurati di conoscere le [liste](53_Type_List.md)._ -Un dizionario è come una lista che ha un nome al posto dell'indice, è un insieme di coppie chiave-valore. +Un dizionario è come una lista che ha un nome al posto dell'indice, è un insieme di coppie chiave-valore. -**Importante**: le coppie chiave-valore in un dizionario non sono ordinate o ordinabili. +**Importante**: da Python 3.7 i dizionari conservano l’ordine di inserimento delle coppie chiave-valore. Le chiavi non vengono ordinate automaticamente per nome o valore. Se in una lista è possibile accedere ad un dato in questo modo: @@ -51,31 +51,31 @@ Si accede ai valori indicando la chiave tra `[]` ```python >>> filled_dict["uno"] -1 +1 ``` Puoi ottenere tutte le chiavi di un dizionario con `keys()` (come oggetto iterabile). Per averle in formato lista è necessario utilizzare `list()`. -**Importante**: Nei dizionari l'ordine delle chiavi non è garantito. Il tuo risultato potrebbe non essere uguale a questo. +**Importante**: da Python 3.7 l’ordine delle chiavi corrisponde all’ordine di inserimento. Nelle versioni precedenti del linguaggio questa garanzia non era prevista. ```python ->> list(filled_dict.keys()) -['uno', 'tre', 'due'] +>>> list(filled_dict.keys()) +['uno', 'due', 'tre'] ``` -Puoi ottenere tutti i valori di un dizionario con `values()` (come oggetto iterabile). -Anche in questo caso, per averle in formato lista, è necessario utilizzare `list()`. Anche in questo caso, come per le chiavi, l'ordine non è garantito +Puoi ottenere tutti i valori di un dizionario con `values()` (come oggetto iterabile). +Per avere i valori in formato lista è necessario utilizzare `list()`. I valori seguono lo stesso ordine delle chiavi. ```python -list(filled_dict.values()) -[1, 3, 2] +>>> list(filled_dict.values()) +[1, 2, 3] ``` Controlla l'esistenza delle chiavi in un dizionario con `in` ```python >>> "uno" in filled_dict -True +True >>> 1 in filled_dict False ``` @@ -122,7 +122,7 @@ Aggiungere una coppia chiave->valore a un dizionario ```python >>> filled_dict.update({"quattro":4}) >>> filled_dict -{'uno': 1, 'tre': 3, 'quattro': 4, 'cinque': 5, 'due': 2} +{'uno': 1, 'due': 2, 'tre': 3, 'cinque': 5, 'quattro': 4} ``` Un altro modo: @@ -130,7 +130,7 @@ Un altro modo: ```python >>> filled_dict["sette"] = 7 >>> filled_dict -{'sette': 7, 'tre': 3, 'cinque': 5, 'due': 2, 'uno': 1, 'quattro': 4} +{'uno': 1, 'due': 2, 'tre': 3, 'cinque': 5, 'quattro': 4, 'sette': 7} ``` Rimuovi una chiave da un dizionario con `del` @@ -138,7 +138,7 @@ Rimuovi una chiave da un dizionario con `del` ```python >>> del filled_dict["uno"] >>> filled_dict -{'sette': 7, 'tre': 3, 'cinque': 5, 'due': 2, 'quattro': 4} +{'due': 2, 'tre': 3, 'cinque': 5, 'quattro': 4, 'sette': 7} ``` Da Python 3.5 puoi anche usare ulteriori opzioni di spacchettamento diff --git a/docs/Pyllole/63_Functions.md b/docs/Pyllole/63_Functions.md index cc47512..be925b3 100644 --- a/docs/Pyllole/63_Functions.md +++ b/docs/Pyllole/63_Functions.md @@ -5,7 +5,7 @@ Puoi considerare una funzione come un piccolo programma contenuto nel tuo codice Ad una funzione è possibile passare degli "argomenti" variabili ad ogni chiamata. Infine, una funzione, può restituire un valore con `return`. -Se si sta utilizzando python dal suo prompt questo valore verrà scritto sulla console. +Se si sta utilizzando python dal suo prompt questo valore verrà scritto sulla console. Se si sta eseguendo un programma il risultato di una funzione può essere assegnato ad una variabile o utilizzato come argomento per altre funzioni. In Python si utilizza `def` per creare le funzioni. @@ -13,15 +13,15 @@ In Python si utilizza `def` per creare le funzioni. Il seguente esempio crea una funzione con due argomenti chiamati `x` e `y`. Scrive sulla console il loro valore e restituisce la loro somma. ```python -def aggiungi(x, y): +def aggiungi(x, y): print("x è {} e y è {}".format(x, y)) - return x + y + return x + y ``` Eseguendo la funzione appena creata si avrà il seguente risultato: ```python ->>> risultato_1 = aggiungi(2, 3) +>>> risultato_1 = aggiungi(2, 3) x è 2 e y è 3 >>> risultato_2 = aggiungi(100, 50) x è 100 e y è 50 @@ -31,13 +31,13 @@ x è 100 e y è 50 150 ``` -## Argomenti +## Argomenti Se eseguo `aggiungi(5,6)`, `x` avrà valore 5 e `y` sarà 6, poiché questo è l'ordine definito alla creazione della funzione. È possibile però cambiare l'ordine degli argomenti specificando direttamente chiave e valore durante la chiamata ad una funzione. ```python ->>> aggiungi(y=6, x=5) +>>> aggiungi(y=6, x=5) x è 5 e y è 6 11 ``` @@ -45,7 +45,7 @@ x è 5 e y è 6 Puoi definire funzioni che accettino un numero non definito di argomenti definindo la funzione con un argomento preceduto da un asterisco: ```python -def varargs(*args): +def varargs(*args): return args ``` @@ -53,14 +53,14 @@ All'interno della funzione la variabile `args` sarà di un tipo particolare chia Questa variabile conterrà tutti i parametri passati alla funzione (leggi la pagine relativa alle [liste](53_Type_List.md) e alle [tuple](55_Type_Tuple.md)). ```python ->>> varargs(1, 2, 3) +>>> varargs(1, 2, 3) (1, 2, 3) ``` Puoi definire funzioni che accettino un numero variabile di coppie chiave/valere come argomento devi definire la funzione con un argomento preceduto da due asterischi: ```python -def keyword_args(**kwargs): +def keyword_args(**kwargs): return kwargs ``` @@ -68,18 +68,18 @@ All'interno della funzione la variabile `kwargs` sarà di un tipo particolare di Questa variabili conterrà tutti i paramentri inviati come coppie chiave/valore (leggi la pagine relativa ai [dizionari](59_Type_Dictionary.md)). ```python ->>> keyword_args(alpha=40, beta=50) +>>> keyword_args(alpha=40, beta=50) {'beta': 50, 'alpha': 40} ``` -Puoi utilizzare entrambi i metodi in una volta: +Puoi utilizzare entrambi i metodi in una volta: ```python def all_the_args(*args, **kwargs): print(args) print(kwargs) ->>> all_the_args(10, 20, alpha=40, beta=50 ) +>>> all_the_args(10, 20, alpha=40, beta=50 ) (10, 20) {'beta': 50, 'alpha': 40} ``` @@ -88,7 +88,7 @@ Quando chiami una funzione, puoi fare l'opposto di `args`/`kwargs`. Usa \* per sviluppare gli argomenti posizionale ed usa \*\* per espandere gli argomenti parola chiave. ```python ->>> args = (1, 2, 3, 4) +>>> args = (1, 2, 3, 4) >>> kwargs = {"a": 3, "b": 4} >>> all_the_args(*args) >>> all_the_args(**kwargs) @@ -97,34 +97,35 @@ Usa \* per sviluppare gli argomenti posizionale ed usa \*\* per espandere gli ar ## Return di valori multipli -Una funzione può restituire valori multipli, tutte le variabili indicate dopo il return verranno restituite in un singolo oggetto tupla (le parentesi sono opzionali). +Una funzione può restituire valori multipli, tutte le variabili indicate dopo il return verranno restituite in un singolo oggetto tupla (le parentesi sono opzionali). ```python -def swap(x, y): +def swap(x, y): return y, x ->>> swap(1, 2) +>>> swap(1, 2) (2, 1) ``` -## Visibilità delle variabili +## Visibilità delle variabili -La visibilità di una variabile, o "variable scope", è la parte di un programma in cui una variabile può essere utilizzata. -Una variabile definita all'interno di una funzione, detta variabile locale, può essere utilizzata solo all'interno di quella funzione. -Una variabile definita all'esterno della funzione, variabile globale, potrà essere utilizzata all'interno di una funzione solo se richiamata tramite `global`. +La visibilità di una variabile, o "variable scope", è la parte di un programma in cui una variabile può essere utilizzata. + +Una variabile definita all’interno di una funzione è detta locale e può essere utilizzata solo all'interno della funzione stessa. +Una variabile definita al livello principale di un modulo è detta globale. Una funzione può leggere una variabile globale senza usare `global`, purché quel nome non venga definito come locale nella funzione. Per assegnare un nuovo valore alla variabile globale dall’interno della funzione, invece, è necessario dichiararla con `global`. ```python -x = 5 +x = 5 -def set_x(num): - # La variabile locale x non è la variabile globale x +def set_x(num): + # La variabile locale x non è la variabile globale x x = num # => 43 print(x) # => 43 -def set_global_x(num): +def set_global_x(num): global x print(x) # => 5 - x = num # la variabile globable x è ora 6 + x = num # la variabile globale x è ora 6 print(x) # => 6 >>> print(x) @@ -148,29 +149,29 @@ Per creare una funzione anonima si utilizza il costrutto `lambda`. Un esempio di funzione (elevamento alla seconda) definita con un nome: ```python -def pow(x): +def pow(x): return x**2 ->>> pow(8) +>>> pow(8) 64 ``` Equivalente funzione ma anonima con `lambda`: ```python ->>> pow = lambda x: x**2 +>>> pow = lambda x: x**2 >>> pow(8) 64 ``` -La definizione lambda non include un `return`, è l'espressione stessa definita in lambda che viene restituita. +La definizione lambda non include un `return`, è l'espressione stessa definita in lambda che viene restituita. È possibile inserire una definizione `lambda` ovunque sia prevista una funzione e non è necessario assegnarla a una variabile. Di seguito un esempio di `lambda` utilizzato per creare funzioni durante, l'esecuzione del programma, ognuna con caretteristiche differenti. ```python ->>> def crea_incrementatore (n): +>>> def crea_incrementatore (n): ... return lambda x: x + n ... >>> incr10 = crea_incrementatore(2) @@ -187,7 +188,7 @@ Spesso le funzioni anonime trovano il loro miglior utilizzo con `map`, `filter` Esempio utilizzando una lista e il precendete esempio di funzione anonima (elevamente alla seconda) ```python ->>> lista = [1,2,3,4] +>>> lista = [1,2,3,4] >>> list(map(lambda x: x**2, lista)) [1, 4, 9, 16] ``` @@ -195,7 +196,7 @@ Esempio utilizzando una lista e il precendete esempio di funzione anonima (eleva Un esempio di un filtro che lascia passare solo valori maggiori di 5: ```python ->>> list(filter(lambda x: x > 5, [3, 4, 5, 6, 7])) +>>> list(filter(lambda x: x > 5, [3, 4, 5, 6, 7])) [6, 7] ``` diff --git a/docs/Pyllole/71_Iterable.md b/docs/Pyllole/71_Iterable.md index c09e651..4b1a369 100644 --- a/docs/Pyllole/71_Iterable.md +++ b/docs/Pyllole/71_Iterable.md @@ -13,7 +13,6 @@ L'oggetto restituito dalla funzione `range()` è un iterabile. 0 1 2 -3 ``` Una lista, un set o le chiavi di un dizionario sono iterabili: diff --git a/docs/Pyllole/83_Inheritance.md b/docs/Pyllole/83_Inheritance.md index 99d96fb..e30f809 100644 --- a/docs/Pyllole/83_Inheritance.md +++ b/docs/Pyllole/83_Inheritance.md @@ -17,31 +17,30 @@ Specificare le classi genitore come parametri della definizione della classe ```python class Superhero(Human): - # Se la classe figlio deve ereditare tutte le definizioni del - # genitore senza alcuna modifica, puoi semplicemente usare + # Se la classe figlio deve ereditare tutte le definizioni del + # genitore senza alcuna modifica, puoi semplicemente usare # la parola chiave "pass" (e nient'altro) # Le classi figlio possono sovrascrivere gli attributi dei loro genitori species = 'Superhuman' - # Le classi figlie ereditano automaticamente il costruttore della classe - # genitore, inclusi i suoi argomenti, ma possono anche definire ulteriori - # argomenti o definizioni e sovrascrivere i suoi metodi (compreso il + # Le classi figlie ereditano automaticamente il costruttore della classe + # genitore, inclusi i suoi argomenti, ma possono anche definire ulteriori + # argomenti o definizioni e sovrascrivere i suoi metodi (compreso il # costruttore della classe). - # Questo costruttore eredita l'argomento "nome" dalla classe "Human" e + # Questo costruttore eredita l'argomento "nome" dalla classe "Human" e # aggiunge gli argomenti "superpowers" e "movie": def __init__(self, name, movie=False, superpowers=["super strength", "bulletproofing"]): - # aggiungi ulteriori attributi della classe - self.fictional = True - self.movie = movie - self.superpowers = superpowers + # aggiungi ulteriori attributi della classe + self.fictional = True + self.movie = movie + self.superpowers = superpowers - # La funzione "super" ti consente di accedere ai metodi della classe - # genitore che sono stati sovrascritti dalla classe figlia, - # in questo caso il metodo __init__. - # Il seguente codice esegue il costruttore della classe genitore: - super().__init__(name) + # La funzione "super" ti consente di accedere ai metodi della classe + # genitore, in questo caso il metodo __init__. + # Il seguente codice inizializza gli attributi definiti in Human: + super().__init__(name) # Sovrascrivere il metodo "sing" def sing(self): @@ -59,36 +58,36 @@ Proviamo la classe `Superhero`: if __name__ == '__main__': sup = Superhero(name="Tick") -# Controllo del tipo di istanza -if isinstance(sup, Human): - print('I am human') -if type(sup) is Superhero: - print('I am a superhero') + # Controllo del tipo di istanza + if isinstance(sup, Human): + print('I am human') + if type(sup) is Superhero: + print('I am a superhero') -# Ottieni il "Method Resolution search Order" usato sia da getattr () -# che da super (). Questo attributo è dinamico e può essere aggiornato -print(Superhero.__mro__) # => (, - # => , ) + # Ottieni il "Method Resolution search Order" usato sia da getattr () + # che da super (). Questo attributo è dinamico e può essere aggiornato + print(Superhero.__mro__) # => (, + # => , ) -# Esegui il metodo principale ma utilizza il proprio attributo di classe -print(sup.get_species()) # => Superhuman + # Esegui il metodo principale ma utilizza il proprio attributo di classe + print(sup.get_species()) # => Superhuman -# Esegui un metodo che è stato sovrascritto -print(sup.sing()) # => Dun, dun, DUN! + # Esegui un metodo che è stato sovrascritto + print(sup.sing()) # => Dun, dun, DUN! -# Esegui un metodo di Human -sup.say('Spoon') # => Tick: Spoon + # Esegui un metodo di Human + sup.say('Spoon') # => Tick: Spoon -# Esegui un metodo che esiste solo in Superhero -sup.boast() # => I wield the power of super strength! - # => I wield the power of bulletproofing! + # Esegui un metodo che esiste solo in Superhero + sup.boast() # => I wield the power of super strength! + # => I wield the power of bulletproofing! -# Attributo di classe ereditato -sup.age = 31 -print(sup.age) # => 31 + # Attributo di classe ereditato + sup.age = 31 + print(sup.age) # => 31 -# Attributo che esiste solo in Superhero -print('Am I Oscar eligible? ' + str(sup.movie)) + # Attributo che esiste solo in Superhero + print('Am I Oscar eligible? ' + str(sup.movie)) ``` diff --git a/docs/Pyllole/85_Inheritance_Multiple.md b/docs/Pyllole/85_Inheritance_Multiple.md index 2eeee3e..ad2fcf6 100644 --- a/docs/Pyllole/85_Inheritance_Multiple.md +++ b/docs/Pyllole/85_Inheritance_Multiple.md @@ -8,19 +8,19 @@ Creaimo una nuova classe `Bat`: # bat.py class Bat: -species = 'Baty' + species = 'Baty' -def __init__(self, can_fly=True): - self.fly = can_fly + def __init__(self, can_fly=True): + self.fly = can_fly -# Questa classe ha anche un metodo "say" -def say(self, msg): - msg = '... ... ...' - return msg + # Questa classe ha anche un metodo "say" + def say(self, msg): + msg = '... ... ...' + return msg -# E anche un suo metodo personale -def sonar(self): - return '))) ... (((' + # E anche un suo metodo personale + def sonar(self): + return '))) ... (((' if __name__ == '__main__': b = Bat() @@ -31,7 +31,7 @@ if __name__ == '__main__': Definiamo una classe che erediti da `Superhero` e `Bat` e proviamola ```python -# superhero.py +# batman.py from superhero import Superhero from bat import Bat @@ -42,14 +42,14 @@ class Batman(Superhero, Bat): def __init__(self, *args, **kwargs): # In genere per ereditare gli attributi devi chiamare super: # super(Batman, self).__init__(*args, **kwargs) - # Ma qui abbiamo a che fare con l'ereditarietà multipla, - # e super() funziona solo con la successiva classe + # Ma qui abbiamo a che fare con l'ereditarietà multipla, + # e super() funziona solo con la successiva classe # nell'elenco MRO. - # Quindi, invece, chiamiamo esplicitamente __init__ per - # tutti gli antenati. L'uso di *args e **kwargs consente - # di passare in modo pulito gli argomenti, con ciascun + # Quindi, invece, chiamiamo esplicitamente __init__ per + # tutti gli antenati. L'uso di *args e **kwargs consente + # di passare in modo pulito gli argomenti, con ciascun # genitore che "sbuccia un livello della cipolla". - Superhero.__init__(self, 'anonymous', movie=True, + Superhero.__init__(self, 'anonymous', movie=True, superpowers=['Wealthy'], *args, **kwargs) Bat.__init__(self, *args, can_fly=False, **kwargs) # sovrascrivere il valore per l'attributo name @@ -61,23 +61,23 @@ class Batman(Superhero, Bat): if __name__ == '__main__': sup = Batman() - # Ottieni il "Method Resolution search Order" + # Ottieni il "Method Resolution search Order" # utilizzato da getattr() e super(). # Questo attributo è dinamico e può essere aggiornato - print(Batman.__mro__) # => (, - # => , - # => , + print(Batman.__mro__) # => (, + # => , + # => , # => , ) - # Esegui il metodo del genitore ma utilizza il proprio + # Esegui il metodo del genitore ma utilizza il proprio # attributo di classe print(sup.get_species()) # => Superhuman # Esegui un metodo che è stato sovrascritto print(sup.sing()) # => nan nan nan nan nan batman! - # Esegui un metodo da Human, perché l'ordine di - # ereditarietà è importante + # Esegui un metodo da Human, perché l'ordine di + # ereditarietà è importante sup.say('I agree') # => Sad Affleck: I agree # Esegui un metodo che esiste solo nel 2o antenato @@ -87,7 +87,7 @@ if __name__ == '__main__': sup.age = 100 print(sup.age) # => 100 - # Attributo ereditato dal secondo antenato il cui valore + # Attributo ereditato dal secondo antenato il cui valore # predefinito è stato ignorato. print('Can I fly? ' + str(sup.fly)) # => Can I fly? False ```