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


Introduzione alla Programmazione in Python: Esercizi di Base, Dispense di Elementi di Informatica

Una serie di esercizi di base per imparare i fondamenti della programmazione in python. Gli esempi illustrano concetti chiave come la sintassi, le variabili, le stringhe e gli operatori. Utile per studenti che desiderano approfondire le loro conoscenze di programmazione in python.

Tipologia: Dispense

2022/2023

In vendita dal 12/02/2025

francesca-memoli-6
francesca-memoli-6 🇮🇹

5 documenti

1 / 245

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Python per tutti
Esplorare dati con Python 3
Charles R. Severance
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
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Anteprima parziale del testo

Scarica Introduzione alla Programmazione in Python: Esercizi di Base e più Dispense in PDF di Elementi di Informatica solo su Docsity!

Python per tutti

Esplorare dati con Python 3

Charles R. Severance

Crediti

Supporto editoriale: Elliott Hauser, Sue Blumenberg Cover Design: Aimee Andrion

Cronologia di stampa

  • 05 Luglio 2016 Prima versione completa di Python 3.
  • 20 Dicembre 2015 Conversione iniziale approssimativa verso Python 3.

Dettagli sul copyright

Copyright ~2009- Charles Severance.

Quest’opera è rilasciata sotto licenza Creative Common Attribution-Non Commercial-Share Alike 3.0 Unported. Questa licenza è disponibile all’indirizzo:

http://creativecommons.org/licenses/by-nc-sa/3.0/

La definizione di ciò che l’autore considera uso commerciale e non-commerciale di questo materiale così come le esenzioni alla licenza sono disponibili nell’Appendice intitolata Dettagli sul Copyright.

iv

L’obiettivo finale di tutti questi cambiamenti è quello di includere in un corso di primo livello solo quegli argomenti che potranno tornare utili anche a coloro che non sceglieranno di diventare programmatori professionisti. Gli studenti che troveranno questo libro interessante e che vogliano esplorare ul- teriormente l’argomento, dovrebbero considerare il libro Think Python di Allen B. Downey. Date le molte sovrapposizioni tra i due libri, gli studenti saranno in grado di acquisire rapidamente alcune ulteriori competenze nelle ulteriori aree della tec- nica di programmazione e del pensiero algoritmico che sono parte di Think Python. Inoltre, dato che i due libri hanno uno stile di scrittura simile, per loro sarà facile muoversi all’interno di Think Python. Come detentore del copyright su Think Python , Allen mi ha dato il permesso di cambiare la licenza del materiale dal suo libro che viene incluso in questo libro, da GNU Free Documentation License alla più recente Creative Commons Attri- bution — Share Alike license. Questo segue il generale cambiamento nelle licenze di documentazione aperta che si stanno spostando da GFDL a CC BY-SA (vedi Wikipedia). L’utilizzo della licenza CC BY-SA indica ai fruitori dell’opera che essa può essere utilizzata, diffusa e anche modificata liberamente, pur nel rispetto di alcune condizioni essenziali e rende ancora più semplice ai nuovi autori riutilizzare questo materiale. Ritengo che questo libro sia un esempio del perché i materiali aperti siano così importanti per il futuro della formazione. Voglio ringraziare Allen B. Downey e la Cambridge University Press per la loro decisione lungimirante nel rendere il libro disponibile sotto un open Copyright. Spero che siano soddisfatti dei risultati del nostro impegno collettivo e mi auguro lo siate anche voi lettori.

Vorrei ringraziare Allen B. Downey e Lauren Cowles per il loro aiuto, la pazienza, e la guida nell’affrontare e risolvere i problemi di copyright riguardanti questo libro. Charles Severance www.dr-chuck.com Ann Arbor, MI, USA 9 settembre 2013 Charles Severance è Clinical Associate Professor presso l’Università del Michigan

  • School of Information.

Indice

  • 1 Perché dovresti imparare a programmare?
    • 1.1 Creatività e motivazione
    • 1.2 Architettura hardware del computer
    • 1.3 Capire la Programmazione
    • 1.4 Parole e frasi
    • 1.5 Conversare con Python
    • 1.6 Terminologia: interprete e compilatore
    • 1.7 Scrivere un programma
    • 1.8 Cos’è un programma?
    • 1.9 I blocchi per costruire i programmi
    • 1.10 Cosa potrebbe andare storto?
    • 1.11 Il percorso di studio
    • 1.12 Glossario
    • 1.13 Esercizi
  • 2 Variabili, espressioni ed istruzioni
    • 2.1 Valori e tipi
    • 2.2 Variabili
    • 2.3 Nomi delle variabili e parole chiavi
    • 2.4 Istruzioni
    • 2.5 Operatori e operandi
    • 2.6 Espressioni
    • 2.7 Ordine delle operazioni
    • 2.8 Operatore modulo
    • 2.9 Operazioni con le stringhe
    • 2.10 Chiedere un valore in input all’utente
    • 2.11 Commenti vi INDICE
    • 2.12 Scegliere nomi mnemonici delle variabili
    • 2.13 Debug
    • 2.14 Glossario
    • 2.15 Esercizi
  • 3 Esecuzione condizionale
    • 3.1 Espressioni booleane
    • 3.2 Operatori logici
    • 3.3 Esecuzione condizionale
    • 3.4 Esecuzione alternativa
    • 3.5 Condizioni concatenate
    • 3.6 Condizioni nidificate
    • 3.7 Gestione delle eccezioni usando try ed except
    • 3.8 Valutazione di un cortocircuito di espressioni logiche
    • 3.9 Debug
    • 3.10 Glossario
    • 3.11 Esercizi
  • 4 Funzioni
    • 4.1 Chiamate di funzione
    • 4.2 Funzioni integrate
    • 4.3 Funzioni di conversione dei tipi di dato
    • 4.4 Funzioni matematiche
    • 4.5 Numeri casuali
    • 4.6 Aggiungere nuove funzioni
    • 4.7 Definizioni e usi
    • 4.8 Flusso di esecuzione
    • 4.9 Parametri e argomenti
    • 4.10 Funzioni produttive e funzioni vuote
    • 4.11 Perché le funzioni?
    • 4.12 Debug
    • 4.13 Glossario
    • 4.14 Esercizi
  • 5 Iterazione INDICE vii
    • 5.1 Aggiornamento delle variabili
    • 5.2 L’istruzione while
    • 5.3 Cicli infiniti
    • 5.4 “Cicli infiniti” e break
    • 5.5 Fermare le iterazioni con continue
    • 5.6 Cicli definiti con l’uso di for
    • 5.7 Schemi di ciclo
      • 5.7.1 Cicli per contare e sommare
      • 5.7.2 Cicli di massimo e minimo
    • 5.8 Debug
    • 5.9 Glossario
    • 5.10 Esercizi
  • 6 Stringhe
    • 6.1 Una stringa è una sequenza
    • 6.2 Ottenere la lunghezza di una stringa usando len
    • 6.3 Scorrere una stringa con un ciclo
    • 6.4 Segmenti di stringhe
    • 6.5 Le stringhe sono immutabili
    • 6.6 Cicli e conteggi
    • 6.7 L’operatore in
    • 6.8 Comparazione di stringhe
    • 6.9 Metodi delle stringhe
    • 6.10 Analisi delle stringhe
    • 6.11 Operatore di formato
    • 6.12 Debug
    • 6.13 Glossario
    • 6.14 Esercizi
  • 7 File
    • 7.1 Persistenza
    • 7.2 Aprire i file
    • 7.3 File di testo e righe
    • 7.4 Lettura dei file
    • 7.5 Ricerche in un file viii INDICE
    • 7.6 Far scegliere all’utente il nome del file
    • 7.7 Utilizzare try, except e open
    • 7.8 Scrivere file
    • 7.9 Debug
    • 7.10 Glossario
    • 7.11 Esercizi
  • 8 Elenchi
    • 8.1 Un elenco è una sequenza
    • 8.2 Gli elenchi sono mutabili
    • 8.3 Scorrere un elenco
    • 8.4 Operazioni sugli elenchi
    • 8.5 Slicing degli elenchi
    • 8.6 Metodi degli elenchi
    • 8.7 Eliminazione di elementi
    • 8.8 Elenchi e funzioni
    • 8.9 Elenchi e stringhe
    • 8.10 Analisi di righe
    • 8.11 Oggetti e valori
    • 8.12 Alias
    • 8.13 Elenchi come argomenti
    • 8.14 Debug
    • 8.15 Glossario
    • 8.16 Esercizi
  • 9 Dizionari
    • 9.1 Dizionario come insieme di contatori
    • 9.2 Dizionari e file
    • 9.3 Cicli e dizionari
    • 9.4 Analisi avanzata del testo
    • 9.5 Debug
    • 9.6 Glossario
    • 9.7 Esercizi
  • 10 Tuple INDICE ix
    • 10.1 Le tuple sono immutabili
    • 10.2 Confronto tra tuple
    • 10.3 Assegnazione di tupla
    • 10.4 Dizionari e tuple
    • 10.5 Assegnazione multipla con dizionari
    • 10.6 Le parole più comuni
    • 10.7 Usare tuple come chiavi nei dizionari
    • 10.8 Sequenze: stringhe, elenchi e tuple - Oh cavolo!
    • 10.9 Debug
    • 10.10Glossario
    • 10.11Esercizi
  • 11 Espressioni regolari
    • 11.1 Confronto di caratteri nelle espressioni regolari
    • 11.2 Estrazione dei dati utilizzando le espressioni regolari
    • 11.3 Combinare ricerca ed estrazione
    • 11.4 Carattere Escape
    • 11.5 Sommario
    • 11.6 Sezione bonus per utenti Unix/Linux
    • 11.7 Debug
    • 11.8 Glossario
    • 11.9 Esercizi
  • 12 Programmi per Internet
    • 12.1 HyperText Transfer Protocol - HTTP
    • 12.2 Il browser Web più semplice del mondo
    • 12.3 Recupero di un’immagine tramite HTTP
    • 12.4 Recupero di pagine Web con urllib
    • 12.5 Analisi dell’HTML e raccolta dati dal Web
    • 12.6 Analisi dell’HTML utilizzando le espressioni regolari
    • 12.7 Analisi dell’HTML con BeautifulSoup
    • 12.8 Leggere file binari tramite urllib
    • 12.9 Glossario
    • 12.10Esercizi
  • 13 Utilizzo di servizi Web x INDICE
    • 13.1 eXtensible Markup Language - XML
    • 13.2 Analizzare XML
    • 13.3 Cicli con i nodi degli XML
    • 13.4 JavaScript Object Notation - JSON
    • 13.5 Analizzare codice JSON
    • 13.6 Interfacce per la programmazione di applicazioni
    • 13.7 Servizio web di geocodifica di Google
    • 13.8 Sicurezza e utilizzo delle API
    • 13.9 Glossario
    • 13.10Esercizi
  • 14 Programmazione ad oggetti
    • 14.1 Gestione di programmi più grandi
    • 14.2 Come Iniziare
    • 14.3 Utilizzare gli oggetti
    • 14.4 I primi script
    • 14.5 Suddividere un problema - l’incapsulamento
    • 14.6 Il nostro primo oggetto Python
    • 14.7 Le classi come tipi
    • 14.8 Ciclo di vita dell’oggetto
    • 14.9 Molte istanze
    • 14.10Ereditarietà
    • 14.11Sommario
    • 14.12Glossario
  • 15 Utilizzo dei database e SQL
    • 15.1 Cos’è un database?
    • 15.2 Fondamenti sui database
    • 15.3 Browser di database per SQLite
    • 15.4 Creazione di una tabella
    • 15.5 Riepilogo dello Structured Query Language
    • 15.6 Uno spider su Twitter utilizzando un database
    • 15.7 Modellazione elementare dei dati
    • 15.8 Programmazione con più tabelle
      • 15.8.1 Vincoli nelle tabelle del database INDICE xi
      • 15.8.2 Recuperare e/o inserire un record
      • 15.8.3 Memorizzare la relazione di amicizia
    • 15.9 Tre tipi di chiavi
    • 15.10Utilizzare JOIN per recuperare dati
    • 15.11Riassunto
    • 15.12Debug
    • 15.13Glossario
  • 16 Come visualizzare dati
    • 16.1 Costruire una Google map partendo da dati geocodificati
    • 16.2 Visualizzare reti e interconnessioni
    • 16.3 Visualizzazione dei dati della posta elettronica
  • A Contributi
    • A.1 Elenco dei collaboratori di Python for Everybody
    • A.2 Elenco dei Traduttori di Python per tutti
    • A.3 Elenco dei collaboratori per Python for Informatics
    • A.4 Prefazione per “Think Python”
      • A.4.1 La strana storia di “Think Python”
      • A.4.2 Ringraziamenti per “Think Python”
    • A.5 Elenco dei collaboratori di “Think Python”
  • B Dettagli sul copyright

Capitolo 1

Perché dovresti imparare a

programmare?

Scrivere programmi (o programmare) è un’attività molto creativa e gratificante. Puoi scrivere programmi per molte ragioni, per guadagnarti da vivere, per effet- tuare complesse analisi dei dati, per divertimento o per aiutare qualcun altro a risolvere un problema. Questo libro presuppone che tutti abbiano bisogno di saper programmare e che, una volta appreso come programmare, sappiano cosa fare con le nuove capacità acquisite.

Ogni giorno siamo circondati da computer che vanno dai portatili agli smartphone. Possiamo pensare a questi computer come ad una sorta di “assistenti personali” che si prendono cura di molti aspetti della nostra vita. L’hardware degli elaboratori moderni è essenzialmente costruito per porci continuamente la domanda: “Cosa vorresti che faccia dopo?”

I programmatori hanno affiancato all’hardware un sistema operativo e una serie di applicazioni che hanno permesso di ottenere un assistente personale digitale che si è dimostrato utile e capace di aiutarci svolgendo compiti diversi.

I computer sono dotati di velocità oltre che di una grande quantità di memoria e potrebbero esserci estramente utili se solo conoscessimo la lingua per spiegare loro quello che vorremmo fosse “fatto dopo”. Se così fosse, potremmo dire al computer di svolgere compiti ripetitivi al nostro posto. Va tenuto a mente che il tipo di attività che i computer possono fare meglio sono spesso il genere di cose che noi umani troviamo più noiose e logoranti.

What Next?

What Next?

What Next?

What Next?

What Next?

What Next?

Figura 1.1: Assistente Digitale Personale

2 CAPITOLO 1. PERCHÉ DOVRESTI IMPARARE A PROGRAMMARE?

Pick Me!

Pick Me!

Pick Me!

Pick Me!

Pick Me!

Buy Me :)

Figura 1.2: I Programmatori ti parlano

Per esempio leggere i primi tre paragrafi di questo capitolo ed individuare quante volte venga ripetuta la parola più comune. Anche se sei in grado di leggere e capire le parole in pochi secondi, contarle è piuttosto difficoltoso in quanto non è il tipo di problema per cui la nostra mente è stata concepita. Per un computer è l’opposto: leggere e capire il testo è difficoltoso mentre è molto più semplice contare le parole e indicarci quante volte è ripetuta la parola più usata.

python words.py Enter file:words.txt to 16

Il nostro “assistente personale per l’analisi delle informazioni” ci ha rapidamente detto che la parola “to” è stata usata sedici volte nei primi tre paragrafi di questo capitolo. Il fatto che i computer siano bravi in attività in cui gli umani non lo sono, è il motivo per cui è necessario che tu diventi abile nel parlare un “linguaggio informatico”. Una volta che avrai imparato questa nuova lingua, potrai delegare al tuo partner (il computer) i compiti banali, ritagliandoti più tempo per le attività per cui sei più portato. In altre parole, tu apporti a questa collaborazione creatività, intuizione ed invettiva.

1.1 Creatività e motivazione

Sebbene questo libro non sia destinato a programmatori professionisti, la program- mazione può essere un lavoro molto gratificante sia dal punto di vista finanziario sia da quello personale. Scrivere programmi utili, eleganti e intelligenti affinché possano essere utilizzati da altri è un’attività molto creativa. Il tuo computer o il tuo Assistente Personale Digitale (PDA) di solito ha al suo interno molti pro- grammi scritti da svariati team di sviluppatori, ciascuno dei quali in competizione per conquistare la tua attenzione ed interesse. Fanno del loro meglio per soddisfa- re le tue esigenze e fornirti, nel contempo, una meravigliosa esperienza d’uso. In alcune situazioni, quando si sceglie uno specifico software, i programmatori sono direttamente gratificati dalla tua scelta. Se pensiamo ai programmi come alla produzione creativa di team di programmatori, probabilmente la seguente immagine è una visione più ragionevole del nostro PDA: Per ora, la nostra motivazione principale non è guadagnare soldi o soddisfare altri utenti, ma piuttosto essere più efficienti nella gestione di dati e informazioni che incontreremo. In un primo momento, sarai sia lo sviluppatore sia l’utente finale

4 CAPITOLO 1. PERCHÉ DOVRESTI IMPARARE A PROGRAMMARE?

Periferiche di input e di output

Software

Memoria principale

Central Processing Unit

What Next?

Rete

Memoria secondaria

Figura 1.4: Dove sei?

rete come ad una sorta di supporto molto lento per archiviare e recuperare dati che potrebbe non essere sempre disponibile. Quindi, in un certo senso, la rete è un tipo più lento e talvolta inaffidabile di memoria secondaria.

Anche se è meglio lasciare ai costruttori di computer la maggior parte dei dettagli sul funzionamento di questi componenti, è utile conoscere un po’ di terminologia in modo da poterci riferire a questi diversi componenti mentre scriviamo i nostri programmi. Come sviluppatore, il tuo compito è quello di utilizzare e armonizzare ciascuna di queste risorse per risolvere problemi e analizzare i dati ottenuti. Come sviluppatore “parlerai” per lo più con la CPU indicandole cosa fare dopo. A volte dirai alla CPU di usare la memoria principale, la memoria secondaria, la rete o i dispositivi di input/output. Dovrai essere colui che risponderà alla domanda posta dalla CPU: “Quale è la prossima istruzione?”. Ma diciamocelo: sarebbe molto scomodo rimpicciolirsi a 5 mm di altezza e introdursi nel computer solo per poter dare comandi tre miliardi di volte al secondo. È più semplice scrivere in anticipo le istruzioni. Chiamiamo pro- gramma queste istruzioni memorizzate e programmazione l’atto di scrivere queste istruzioni e fare in modo che siano corrette.

1.3 Capire la Programmazione

Nel resto di questo libro, cercherò di trasformarti in una persona esperta nell’arte della programmazione. Alla fine diventerai programmatore , forse non un program- matore professionista, ma almeno avrai le capacità per esaminare un problema relativo all’analisi di dati/informazioni e sviluppare un programma che lo risolva. In un certo senso, avrai bisogno di due abilità per diventare un programmatore:

Per prima cosa, dovrai conoscere il linguaggio di programmazione (Python) di cui avrai bisogno di padroneggiare vocabolario e grammatica. Dovrai essere in grado di scrivere correntemente le parole e sapere come costruire frasi “ben strutturate”. In secondo luogo, avrai bisogno di “raccontare una storia”. Per scrivere una storia, devi combinare parole e frasi allo scopo di trasmettere un’idea al lettore. L’abilità

1.4. PAROLE E FRASI 5

nella produzione di storie è una capacità che si migliora scrivendo e ottenendo feedback. Nell’ambito della programmazione il nostro programma è la “storia” e il problema che stai cercando di risolvere è “l’idea”. Una volta che avrai imparato un linguaggio di programmazione come Python, sarà molto più facile impararne un secondo come JavaScript o C++. Sebbene il nuovo linguaggio di programmazione abbia un vocabolario ed una grammatica molto diversi rispetto a Python, la modalità di affrontare un problema è la medesima in tutti i linguaggi di programmazione. Imparai il “vocabolario” e le “frasi” di Python molto velocemente. Sarà, però, necessario un tempo maggiore per essere in grado di scrivere un programma che sia adatto a risolvere un problema nuovo. Si insegna a programmare in modo simile a come si insegna a scrivere: Inizieremo con il leggere e comprendere i programmi, quindi ne scriveremo alcuni semplici, in seguito scriveremo programmi sempre più complessi. Ad un certo punto “troverai la tua ispirazione” e riuscirai a vedere da solo lo schema e sarà più naturale affrontare un problema scrivendo un programma che lo risolva. Arrivati a questo punto, programmare diventerà un processo molto piacevole e creativo. Iniziamo intanto con il vocabolario e la struttura dei programmi in Python. Sii paziente: questi esempi semplici ti ricorderanno quando hai iniziato a leggere per la prima volta.

1.4 Parole e frasi

A differenza della nostra lingua, il vocabolario di Python è in realtà piuttosto limitato. Chiameremo questo “vocabolario” parole riservate. Queste sono parole che hanno un significato molto speciale per Python. Quando le incontra in un suo script, per Python hanno un solo ed unico significato. Più tardi, quando scriverai codice, avrai la possibilità di creare altre parole cui assegnare un preciso significato: le variabili. Avrai una grande libertà nello scegliere i nomi per le variabili, ma comunque non potrai usare nessuna delle parole riservate come nome per una variabile.

Nell’addestramento di un cane, vengono utilizzate parole speciali come “seduto”, “resta”, “porta”, ecc. Quando parli con un cane e non utilizzi nessuna delle parole riservate, ti guarderà in faccia con uno sguardo interrogativo fino a quando non sentirà una parola riservata. Ad esempio, se dici “Ogni giorno Luigi fa una passeg- giata per almeno due chilometri”, la maggior parte dei cani probabilmente capirà solo “bla bla bla passeggiata bla bla bla bla.” Questo perché solo “passeggiata” è una parola riservata nel linguaggio del cane. D’altro conto molti suggeriscono che il linguaggio tra umani e gatti non abbia parole riservate^1.

Tornando a Python, le parole riservate includono:

and class elif for in nonlocal raise with as continue else from import not return yield assert def except global is or try break del finally if lambda pass while (^1) http://xkcd.com/231/

1.5. CONVERSARE CON PYTHON 7

I come in peace, please take me to your leader ˆ SyntaxError: invalid syntax

Non sta andando molto bene: a meno che tu non pensi qualcosa velocemente, è probabile che gli abitanti del pianeta ti pugnalino con le loro lance, ti mettano su uno spiedo, ti arrostiscano sopra un fuoco e ti trasformino nel piatto principale della cena. Fortunatamente hai portato con te una copia di questo libro e hai il dito fermo in questa pagina. Riprova:

print('Hello world!') Hello world!

Questo è molto più chiaro, quindi prova a comunicare ancora:

print('You must be the legendary god that comes from the sky') You must be the legendary god that comes from the sky print('We have been waiting for you for a long time') We have been waiting for you for a long time print('Our legend says you will be very tasty with mustard') Our legend says you will be very tasty with mustard print 'We will have a feast tonight unless you say File "", line 1 print 'We will have a feast tonight unless you say ˆ SyntaxError: Missing parentheses in call to 'print'

La conversazione stava andando così bene, poi quando hai fatto l’errore più piccolo che si possa fare usando il linguaggio Python, “lui” ha tirato nuovamente fuori gli artigli. A questo punto, dovresti esserti reso conto che anche se Python è incredibilmente complesso, potente e schizzinoso sulla sintassi da utilizzare per comunicare con “lui”, non è affatto intelligente. In realtà stai solo avendo una conversazione con te stesso, ma usando una sintassi corretta. In un certo senso, quando utilizzi un programma scritto da qualcun altro, la con- versazione si realizza tra te e gli altri sviluppatori, con Python come intermediario. Per chi scrive codice Python è solo un modo di esprimere come dovrebbe procedere la conversazione. In soli pochi altri capitoli, sarai uno di quei programmatori che parlano agli utenti tramite il programma Python. Prima di lasciare la nostra prima conversazione con l’interprete Python, dovresti probabilmente conoscere il modo corretto per dire “arrivederci” alla fine di una conversazione con gli abitanti del Pianeta Python:

good-bye Traceback (most recent call last):

8 CAPITOLO 1. PERCHÉ DOVRESTI IMPARARE A PROGRAMMARE?

File "", line 1 , in NameError: name 'good' is not defined

if you don't mind, I need to leave File "", line 1 if you don't mind, I need to leave ˆ SyntaxError: invalid syntax quit ()

Noterete che, nei due tentativi errati precedenti, l’errore è diverso. Nel secondo caso, if è una parola riservata e Python, vedendo la parola riservata, pensava che stessimo cercando di dirgli qualcosa, utilizzando una sintassi errata.

Il modo corretto per dire “arrivederci” a Python è digitare quit() al prompt inte- rattivo >>>. Credo che ti ci sarebbe voluto un po’ per indovinarlo, quindi avere un libro sull’argomento a portata di mano probabilmente si rivelerà utile.

1.6 Terminologia: interprete e compilatore

Python è un linguaggio di alto livello destinato a essere relativamente semplice da leggere e scrivere per gli umani e altrettanto semplice da leggere ed elaborare per i computer. Altri linguaggi di alto livello sono Java, C ++, PHP, Ruby, Basic, Perl, JavaScript ecc. Purtroppo l’attuale architettura della Central Processing Unit (CPU) non è in grado di capire nessuno di questi linguaggi di alto livello.

La CPU comprende solo quello che chiamiamo linguaggio macchina. Il linguag- gio macchina è molto basilare e francamente molto stancante da scrivere poiché composto esclusivamente da zeri e uno:

001010001110100100101010000001111 11100110000011101010010101101101 ...

Il linguaggio macchina a prima vista sembra abbastanza semplice, dato che ci sono solo zeri e uno, ma la sua sintassi è molto più complessa e molto più intricata di quella del Python. Pertanto pochissimi programmatori scrivono in linguaggio macchina. Piuttosto si preferisce utilizzare vari “traduttori” per consentire agli sviluppatori di scrivere in linguaggi di alto livello come Python o JavaScript e lasciare agli interpreti la conversione in linguaggio macchina per l’esecuzione da parte della CPU.

Dato che il linguaggio macchina è legato all’hardware del computer, tale linguaggio non è trasferibile tra diversi tipi di hardware. Contrariamente i programmi scritti in linguaggi di alto livello possono essere spostati su architetture diverse utilizzando l’interprete presente sulla nuova macchina o ricompilando il codice per creare una versione in linguaggio macchina del programma adatta al nuovo sistema.

Questi traduttori di linguaggi di programmazione si dividono in due categorie generali: (1) interpreti e (2) compilatori.

Un interprete legge il codice sorgente del programma così come è stato scritto dal programmatore: analizza il codice sorgente e interpreta le istruzioni al volo.