Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


teoria e pratica di python, Schemi e mappe concettuali di Fondamenti di informatica

libro sul linguaggio python - informatica

Tipologia: Schemi e mappe concettuali

2017/2018

Caricato il 16/03/2023

cclementina
cclementina 🇮🇹

5

(1)

2 documenti

1 / 37

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Imparare a
programmare in
Python
Capitoli:
Capitolo 1. Shell interattiva ed E ditor Testuale
Capitolo 2. Variabili e Stringhe
Capitolo 3. Conversioni di Tipo, Print e Input
Capitolo 4. Diagrammi Di Flusso, Logica Booleana e Operatori di Comparazione
Capitolo 5. Controllo di Flusso: if, elif ed else
Capitolo 6. Ciclo While, istruzioni break e continue
Capitolo 7. Il Ciclo For e la funzione range
Capitolo 8. I Moduli della Standard Library
Capitolo 9. Le Funzioni
Capitolo 10. Liste e Tuple
Capitolo 11. Somiglianza tra Liste e Stringhe
Capitolo 12. I Metodi delle Liste
1. Shell interattiva ed Editor Testuale
La prima cosa importante da dire su Python 3 è che è presente "un'ambiente"
chiamata IDLE (Integrated DeveLopment Environment o Integrated Development and
Learning Environment), ed è costituita da due parti: una Shell Interattiva
(Terminale), che è la prima parte che vi si presenta all'avvio, e un Editor Testuale:
per aprire quest'ultimo cliccate su FILE / NEW FILE.
Per quanto all'aspetto possano apparire simili, queste due parti sono pensate per due
scopi differenti tra di loro. La shell interattiva o interprete dei comandi, esegue le
istruzioni una alla volta, riga per riga, ed è pensata oltre che per effettuare semplici
calcolazioni, per sperimentare ed imparare cosa fanno le varie istruzioni di Python.
Se noi scriviamo:
print('Hello World!')
Non appena daremo INVIO, l'istruzione verrà processata e all'istante ci verrà restituito
un risultato:
Hello World!
In questo caso l'istruzione print (letteralmente stampare a schermo) ci restituisce
Hello World!, che è tradizionalmente il primo programma che viene lanciato in
ciascun linguaggio di programmazione.
L'editor testuale invece, è un ambiente pensato e realizzato per la costruzione di veri e
propri programmi strutturati (che per eseguirli, il modo più semplice e veloce è
cliccare il tasto destro del mouse o trackpad e selezionare la voce "Run"). Ci sono tanti
editor testuali pensati per Python o comunque compatibili... per citarne alcuni
PyCharm, Atom e Sublime Text. Noi utilizzeremo PyCharm.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25

Anteprima parziale del testo

Scarica teoria e pratica di python e più Schemi e mappe concettuali in PDF di Fondamenti di informatica solo su Docsity!

Imparare a

programmare in

Python

Capitoli:

Capitolo 1. Shell interattiva ed Editor Testuale Capitolo 2. Variabili e Stringhe Capitolo 3. Conversioni di Tipo, Print e Input Capitolo 4. Diagrammi Di Flusso, Logica Booleana e Operatori di Comparazione Capitolo 5. Controllo di Flusso: if, elif ed else Capitolo 6. Ciclo While, istruzioni break e continue Capitolo 7. Il Ciclo For e la funzione range Capitolo 8. I Moduli della Standard Library Capitolo 9. Le Funzioni Capitolo 10. Liste e Tuple Capitolo 11. Somiglianza tra Liste e Stringhe Capitolo 12. I Metodi delle Liste

1. Shell interattiva ed Editor Testuale

La prima cosa importante da dire su Python 3 è che è presente "un'ambiente" chiamata IDLE (Integrated DeveLopment Environment o Integrated Development and Learning Environment), ed è costituita da due parti: una Shell Interattiva (Terminale), che è la prima parte che vi si presenta all'avvio, e un Editor Testuale : per aprire quest'ultimo cliccate su FILE / NEW FILE. Per quanto all'aspetto possano apparire simili, queste due parti sono pensate per due scopi differenti tra di loro. La shell interattiva o interprete dei comandi, esegue le istruzioni una alla volta, riga per riga, ed è pensata oltre che per effettuare semplici calcolazioni, per sperimentare ed imparare cosa fanno le varie istruzioni di Python. Se noi scriviamo: print('Hello World!') Non appena daremo INVIO, l'istruzione verrà processata e all'istante ci verrà restituito un risultato: Hello World! In questo caso l'istruzione print (letteralmente stampare a schermo) ci restituisce Hello World! , che è tradizionalmente il primo programma che viene lanciato in ciascun linguaggio di programmazione. L'editor testuale invece, è un ambiente pensato e realizzato per la costruzione di veri e propri programmi strutturati (che per eseguirli, il modo più semplice e veloce è cliccare il tasto destro del mouse o trackpad e selezionare la voce "Run"). Ci sono tanti editor testuali pensati per Python o comunque compatibili... per citarne alcuni PyCharm, Atom e Sublime Text. Noi utilizzeremo PyCharm.

Essendo pensata per sperimentare ed effettuare semplici calcolazioni, con la shell di Python possiamo effettuare Operazioni Numeriche. In Python queste sono dette Espressioni, e sono formate da Valori e Operatori. ATTENZIONE!!! I caratteri >>> (presenti solamente quando lavoriamo direttamente da Terminale) non si scrivono!!! Inoltre, qualora volessimo scrivere dei commenti per in futuro ricordare perché (per esempio) abbiamo scritto quella fetta di codice, in Python si utilizza il simbolo # , seguito poi dal nostro commento. In questo caso chiaramente i 2 sono i valori mentre il + è l’operatore:

2 + 2 4 Lo stesso discorso vale chiaramente per le sottrazioni: 4 - 2 2 L'operatore per la divisione è lo slash avanti, quindi per fare 9 diviso 3 scriviamo: 9 / 3

L'operatore per la moltiplicazione è invece l'asterisco, quindi ad esempio 3 per 3 diventa:

3 * 3 9 Fate attenzione a non confondere questo l'operatore * con una x! 3 x 3 ci restituisce infatti un errore di sintassi! 3 x 3 SyntaxError: invalid syntax In caso di espressioni numeriche più complesse, l'ordine di esecuzione segue lo standard matematico moltiplicazioni e divisioni per prime, con addizioni e sottrazioni a seguire. Quindi ad esempio: 2 + 3 * 3 11 ci restituisce 11 perché la prima operazione ad essere stata svolta è la moltiplicazione 3 * 3. Se avete bisogno di stabilire una priorità di esecuzione personalizzata, seguendo lo standard matematico, anche con Python si utilizzano le parentesi. La stessa espressione di prima, utilizzando le parentesi potrebbe ad esempio diventare: ( 2 + 3 ) * 3 15 dandoci come risultato 15, perché stavolta la prima operazione ad essere stata svolta è la somma (2 + 3). In questi primi esempi abbiamo usato valori appartenenti al primo tipo di dato di Python: l'Intero , o Integer.

2. Variabili e Stringhe

Vi siete mai chiesti come facciano i vostri programmi a salvare valori nella memoria del Computer e ad accedervi poi in un secondo momento? Questo avviene in parte per mezzo di quelle che chiamiamo Variabili. Possiamo pensare a una variabile come ad una scatola che puó contenere un singolo valore, e l'inserimento del valore in questa "scatola", avviene tramite un processo chiamato assegnazione. Nella shell interattiva scrivete:

spam = 21 Con questo comando è come se aveste creato una scatola nella memoria del computer, chiamandola spam. All'interno di questa scatola chiamata SPAM avete quindi depositato il numero 21. Fino a che lascerete la scatola li, senza metterci nient'altro dentro, potrete riaccedere al valore assegnatole utilizzando il nome della scatola, quindi della variabile, come collegamento al valore contenuto. Provate a scrivere il nome della variabile sulla Shell Interattiva, e date invio: spam 21 Ecco che ci riappare il numero che avevemo precedentemente depositato. Una volta che avete richiamato questa variabile, è possibile fare qualsiasi tipo di calcolo sul valore ad essa assegnato, ad esempio: spam * 3 63 L'operazione spam * 3 ci restituisce il numero 63, che è il triplo del valore contenuto in spam. In Python ci sono delle regole per quanto riguarda i nomi che è possibile dare alle variabili: questi infatti possono contenere solo lettere , numeri e underscore , ovvero il trattino basso, ma non possono iniziare con un numero! Venire meno a queste regole comporta la comparsa di errori di sintassi. Proviamo a creare una variabile e ad usare come primo carattere del nome un carattere numerico: 1esempio = 2 File "stdin", line 1 1esempio = 2 ^ SyntaxError: invalid syntax Per lo stesso motivo sopracitato, otteniamo un errore anche in questo caso: esem-pio = 5 File "", line 1 SyntaxError: can't assign to operator Di norma è importante dare alle variabili nomi specifici , che ci permettano di identificarne lo scopo all'interno del programma, facilitandone la lettura e la semplicità complessiva.

Una delle caratteristiche più potenti delle variabili in Python è che potete riassegnarle quante volte vi pare. Se finora state immaginando le variabili come scatole a cui viene dato un nome e su cui è possibile inserire un valore, potete anche immaginare che a seconda del caso ci sia bisogno di inserirvi degli altri valori. Ora introduciamo un nuovo tipo di dato, le Stringhe : queste non sono altro che valori di tipo testuale, quindi un insieme di caratteri (numeri e simboli compresi) inseriti tra apici ('') o doppi apici (""). Come esempio, creiamo una variabile chiamata frase e inseriamoci dentro la stringa 'Una volta imparato, Python si dimostra estremamente versatile' racchiusa tra singoli apici:

frase = 'Una volta imparato, Python si dimostra estremamente versatile' se ora andiamo ad effettuare un controllo con la funzione type()... notiamo che la classe di dato contenuta nella variabile frase è appunto una stringa: type(frase) class 'str' Creiamo ora una seconda variabile chiamata frase2 e inseriamoci dentro la stringa "Python è in assoluto il miglior linguaggio per chi sta iniziando a programmare", ma stavolta includiamola tra doppi apici. frase2 = "Python è in assoluto il miglior linguaggio per chi sta iniziando a programmare" proviamo a richiamarne il valore sulla Shell: frase 'Python è in assoluto il miglior linguaggio per chi sta iniziando a programmare' Ma come mai anche questa stringa ci viene restituita tra singoli apici quando noi l'abbiamo scritta usando invece doppi apici? Questo semplicemente perché Python è stato ideato in questa maniera, le stringhe vengono sempre restituite tra singoli apici. In Python, ci sono alcuni caratteri che non possono essere inclusi direttamente nelle stringhe, come ad esempio doppi apici in una stringa definita usando propri questi. In questo caso ci troveremo quindi impossibilitati a fare ad esempio delle citazioni: "e Dante scrisse: "Nel mezzo del cammin di nostra vita..."" File "", line 1 "e Dante scrisse: "Nel mezzo del cammin di nostra vita..."" ^ SyntaxError: invalid syntax Per Python, è come se avessimo interrotto la stringa prima della sua stessa fine, e questo fa si che ci restituisca un errore! Per ovviare a questo problema possiamo utilizzare gli apici singoli per definire la stringa, oppure utilizzare un backslash prima dei caratteri "scomodi". Riscriviamo ora la stessa stringa di prima, ma impiegando i backslash: "e Dante scrisse: "Nel mezzo del cammin di nostra vita...""

frase2 = "Python è in assoluto il miglior linguaggio per chi sta iniziando a programmare" proviamo a richiamarne il valore sulla Shell: >>> frase 'Python è in assoluto il miglior linguaggio per chi sta iniziando a programmare' Ma come mai anche questa stringa ci viene restituita tra singoli apici quando noi l'abbiamo scritta usando invece doppi apici? Questo semplicemente perché Python è stato ideato in questa maniera, le stringhe vengono sempre restituite tra singoli apici. In Python, ci sono alcuni caratteri che non possono essere inclusi direttamente nelle stringhe, come ad esempio doppi apici in una stringa definita usando propri questi. In questo caso ci troveremo quindi impossibilitati a fare ad esempio delle citazioni: >>> "e Dante scrisse: "Nel mezzo del cammin di nostra vita..."" File "", line 1 "e Dante scrisse: "Nel mezzo del cammin di nostra vita..."" ^ SyntaxError: invalid syntax Per Python, è come se avessimo interrotto la stringa prima della sua stessa fine, e questo fa si che ci restituisca un errore! Per ovviare a questo problema possiamo utilizzare gli apici singoli per definire la stringa, oppure utilizzare un backslash prima dei caratteri "scomodi". Riscriviamo ora la stessa stringa di prima, ma impiegando i backslash: >>> "e Dante scrisse: "Nel mezzo del cammin di nostra vita..."" 'e Dante scrisse: "Nel mezzo del cammin di nostra vita..."'

Come fare ora ad ottenere il numero totale di arance presenti in tre sacchi? Guardate cosa succede se proviamo a moltiplicare la variabile per 3:

arance_per_sacco * 3 '272727' Come si può notare la funzione non ci restituisce il numero totale di arance presenti in tre sacchi, ma moltiplica la stringa per 3, quindi riscrivere tre volte la stessa stringa. Invece, per moltiplicare (matematicamente) il numero in se utilizzeremo, come è possibile immaginare per logica, la funzione int(). Facciamo quindi... int(arance_per_sacco) * 3 81 Ed ecco che ci mostra il risultato matematico della moltiplicazione, quindi le arance sono 81! In maniera molto simile potete ottenere un Float tramite la funzione float(). Volendo convertire la variabile età del primo esempio facciamo: float(età)

Ora introduciamo la funzione più famosa nel regno di Python, la funzione print(). Ciò che print() fa è mostrarci in output (in questo caso a schermo) qualsiasi cosa le passiamo…

print(str( 33 ) + ' trentini entrarono a Trento... passando per la funzione print :) ') '33 trentini entrarono a Trento... passando per la funzione print :) ' Per andare a capo si utilizza il carattere newline , ovvero \n , in questo modo: print(' Prima riga \n Seconda riga \n ecc ecc...') ' Prima riga Seconda riga ecc ecc...' Oppure potete direttamente effettuare un print multilinea utilizzando 3 apici , in questo modo: print("""prima linea seconda linea terza linea...""") prima linea seconda linea terza linea… La funzione input() invece ci serve per l'inserimento di dati da parte dell'utente in esecuzione : questo ci permette di rendere le cose estremamente interattive; ciò che inserirete tramite input() verrà passato a Python sotto forma di stringa. Ad esempio, definiamo una variabile X ed assegnamole un valore introdotto tramite la funzione input():

x = input() 23 Come possiamo verificare con type(): type(x) class 'str' Anche se abbiamo inserito apparentemente un numero, questo viene assegnato alla variabile sotto forma di stringa!

4. Diagrammi Di Flusso, Logica Booleana e Operatori

di Comparazione

Normalmente dietro la realizzazione di ciascun programma è sempre presente una fetta sostanziosa di logica. Vengono delineati uno o più algoritmi , che sono "procedimenti per risolvere un determinato problema attraverso un numero finito di passi elementari". Un algoritmo talvolta può essere molto complesso: in questi casi, per rappresentarne il flusso di esecuzione e controllo da un punto di vista visivo, si utilizzano i Diagrammi di Flusso. Un programmatore si rivolgerà spesso all'utilizzo dei diagrammi di flusso per poter delineare e visualizzare in maniera logica ed esaustiva cosa il suo programma fa e quale strategia adottare nella fase di scrittura vera e propria. In sintesi potete pensare a questi diagrammi come a una sorta di mappa che vi guida alla comprensione logica del vostro problema, e quindi del vostro programma. Uno degli esempi di Diagrammi di Flusso è l'esempio del giorno di pioggia, ovvero si va a delineare quali possibili azioni razionali si possano prendere qualora fuori stia piovendo e si voglia restare asciutti! Andiamo ad analizzare questo scenario e proviamo a stilare i passi di un possibile algoritmo: Sta piovendo? Se si, sta piovendo, ma disponiamo di un ombrello, possiamo decidere di uscire di casa e affrontare le intemperie; Se si, sta piovendo, ma non disponiamo di un ombrello, allora sarebbe meglio restare in casa e aspettare che la pioggia passi, magari controllando di tanto in tanto; Se invece non sta piovendo possiamo uscire tranquillamente. Per quanto la situazione presa ad esempio sia piuttosto semplice, ci rendiamo conto che analizzarne logicamente tutti questi aspetti a voce potrebbe risultare confusionale, ed è proprio qui che entrano quindi in gioco proprio i diagrammi di flusso. Le operazioni da compiere sono rappresentate mediante figure geometriche (rettangoli, rombi ecc...), e ciascuna di esse ha uno scopo preciso.

chiamata cancello, a cui assegnamo il valore True qualora il cancello sia aperto, permettendo così alla macchine di entrare, oppure False in caso contrario: cancello = True oppure cancello = False

type(cancello) class 'bool' True e False sono il metodo utilizzato in Python per delineare Si e No dei diagrammi di flusso; diamo uno sguardo a questo schema: Operatori di Comparazione Sono operatori che servono a comparare valori tra di loro, e che ci restituiscono sempre risultati di natura booleana, quindi True o False. Se affermassi che 5 è uguale a 5, potremo dire che quest'affermazione è Veritiera, quindi True, mentre se affermassi che 5 è uguale a 6, l'affermazione sarebbe Falsa.

Gli operatori di comparazione sono 6: Un'importante distinzione da fare è quella tra "=" e "==": Il primo è il simbolo del processo di assegnazione (che utilizziamo cioè per assegnare un valore a una variabile), mentre il secondo è l'operatore di comparazione dell'uguaglianza. Facciamo alcuni esempi di utilizzo di questi operatori nella Shell Interattiva, in modo da rendere più comprensibile il concetto e farsi un'idea migliore:

5 == 5 True 5 == 6 False 23 < 50 True "ciao" != "arrivederci" True X = 18 X >= 16 True 33 = "33" False Operatori Booleani: AND, OR, NOT Come nell'Algebra classica abbiamo operatori quali + e -, nell'Algebra Booleana esistono 3 OPERATORI BOOLEANI, e questi sono AND, OR, NOT. Gli operatori booleani sono utilissimi perché ci consentono di creare espressioni ben più articolate e type(cancello) class 'bool' True e False sono il metodo utilizzato in Python per delineare Si e No dei diagrammi di flusso; diamo uno sguardo a questo schema: Operatori di Comparazione Sono operatori che servono a comparare valori tra di loro, e che ci restituiscono sempre risultati di natura booleana, quindi True o False. Se affermassi che 5 è uguale a 5, potremo dire che quest'affermazione è Veritiera, quindi True, mentre se affermassi che 5 è uguale a 6, l'affermazione sarebbe Falsa. Gli operatori di comparazione sono 6: Un'importante distinzione da fare è quella tra "=" e "==": Il primo è il simbolo del processo di assegnazione (che utilizziamo cioè per assegnare un valore a una variabile), mentre il secondo è l'operatore di comparazione dell'uguaglianza. Facciamo alcuni esempi di utilizzo di questi operatori nella Shell Interattiva, in modo da rendere più comprensibile il concetto e farsi un'idea migliore: >>> 5 == 5 True >>> 5 == 6 False >>> 23 < 50 True >>> "ciao" != "arrivederci" True >>> X = 18 >>> X >= 16 True >>> 33 = "33" False Operatori Booleani: AND, OR, NOT Come nell'Algebra classica abbiamo operatori quali + e -, nell'Algebra Booleana esistono 3 OPERATORI BOOLEANI, e questi sono AND, OR, NOT. Gli operatori booleani sono utilissimi perché ci consentono di creare espressioni ben più articolate e descrittive di un semplice 5 == 5. Vengono utilizzati in combinazioni con gli operatori di comparazione appena descritti. Andiamo ad analizzarne il comportamento tramite

Nel caso di OR , affinché il risultato sia True almeno una delle due comparazioni deve restituire True e chiaramente, tutti i casi risultano veritieri eccetto l'ultimo, in cui entrambi i valori sono falsi. Facciamo degli esempi sulla Shell Interattiva per capire meglio il concetto:

25 >= 25 or 23 <= 25 True "io" == "io" or "io" == "robot" True 1 != 1 or 1 == 1 True 4 == 5 or 5 == 6 False Operatore NOT: Parliamo ora dell'ultimo operatore booleano, il NOT , forse il più semplice da capire, che dà come risultato il contrario. True = False False = True not "io" == "robot" True not 3 == 3 False

5. Controllo di Flusso: if, elif ed else

Per ricollegarci bene al discorso direi di ripartire dal diagramma di flusso analizzato nella

lezione precedente: Si tratta di uno schema che illustra le possibili azioni razionali che una persona può prendere in caso di pioggia, qualora il suo scopo sia restare asciutto. Abbiamo

utile, perché significa infatti che state imparando qualcosa! Tutti sbagliano, e i migliori fanno tesoro di ciascun errore che la vita gli ponga davanti per imparare. Come tutti i programmatori, se la Shell vi restituisce un messaggio che non riuscite a capire, semplicemente copiatelo e datelo in pasto a Google, che si dimostrerà anche in questo caso un preziosissimo alleato, garantito. Come fare ad eseguire del codice selezionato qualora la condizione di controllo restituisca invece False? Per questo scopo ci viene in aiuto l'istruzione Else , traducibile in Italiano con "Altrimenti" o "Diversamente".

Come vedete ora, se l'espressione restituisce un valore booleano False, viene eseguito un altro blocco di codice prima che il programma finisca. Il blocco else è sempre l'ultimo ad essere analizzato ed eseguito solo se tutte le condizioni precedenti a else sono risultate false. Modifichiamo il nostro codice in maniera appropriata: età = 16 if età >= 18 : print("Sei maggiorenne") else: print("Sei minorenne") Eseguiamo: 'Sei minorenne' E come vedete, ora ci viene restituita la stringa "Sei minorenne" prima che il programma finisca! Ci saranno dei momenti in cui i vostri programmi dovranno essere pronti a poter fronteggiare più di due possibili strade... come un incrocio stradale un po' più complesso. Per fare questo entra in gioco l'ELIF , che significa "Else IF", ovvero "altrimenti se..." che vi permette di aggiungere tanti possibili blocchi di controllo quanti ne avete bisogno. L'istruzione elif viene eseguita solo se la sua espressione di controllo restituisce True e l'if o eventuali elif precedenti hanno restituito False. Ad esempio, rendiamo un po' più complesso il nostro programma, aggiungendo una variabile patente e l'operatore booleano and: età = 18 patente = False if età >= 18 and patente == True: print("Puoi noleggiare una Ferrari!") elif età >= 18 and patente == False: print("Niente patente, niente Ferrari!") else: print("Ritorneremo a parlare di macchinoni tra qualche anno...") In accordo con questo esempio, il diagramma di flusso potrebbe essere simile a questo:

if controlla se all'interno della variabile contatore è presente un valore minore o uguale a 10... e visto che la condizione risulta True ci viene restituito il valore della variabile contatore. Viene quindi sommato 1 al contenuto di contatore, e infine il programma termina. Proviamo ora a eseguire invece la versione col ciclo while:

0 1 2 3 4 5 6 7 8 9 10

Come nel caso di if, l'istruzione while controlla se al contatore è associato un valore minore o uguale a 10: siccome la condizione risulta veritiera, il programma entra nel loop , mandando in output il contenuto di contatore, e quindi sommandoci 1. Questo si ripete fintanto che la condizione risulta True, cioè fino a che in contatore non è presente un valore superiore a 10... caso in cui il ciclo while viene appunto interrotto. Ma cosa succederebbe qualora la condizione di controllo restasse perennemente True? In questo caso otterremo un infinite loop, ovvero un ciclo infinito ... proviamo un po’: while 15 == 15 : print('ciclo infinito!!!') Eseguiamo... ciclo infinito!!! ciclo infinito!!! ciclo infinito!!! ciclo infinito!!! ciclo infinito!!! ciclo infinito!!! ciclo infinito!!! ciclo infinito!!! ciclo infinito!!! ciclo infinito!!! (...) Per quanto questo infinite loop non sia un errore del linguaggio di programmazione ma anzi, si dimostri estremamente utile, qualora vi troviate ad averne innescato uno per errore, volendo bloccarlo vi basterà cliccare CTRL-C. Ora introduciamo l'istruzione break e l'istruzione continue. L'istruzione break serve per terminare un ciclo while prematuramente: non appena quest'espressione viene letta e processata all'interno del ciclo, ciò che Python fa è bloccare il loop istantaneamente. Combiniamo i due esempi usati in precedenza, ma incorporiamo anche l'istruzione break: