Python corso di base
Sommario
- Introduzione
- Funzioni
- Operazioni di base
- Moduli
- Tipi di dati
- Eccezioni e asserzioni
- Variabili
- Gestione file
- Strutture di controllo
- Altri tipi di dati
- Liste
- Funzioni utili
Introduzione
Python è un linguaggio di programmazione di alto livello (simile alla logica umana) realizzato da Guido van Rossum e pubblicato nel 1991. È utilizzato in numerose aree come applicazioni web, script, calcoli scientifici e intelligenza artificiale. Python è utilizzato da grandi organizzazioni come Google, NASA, CIA, Disney. È un potente linguaggio per lavorare con i database e manipolare i big data eseguendo calcoli matematici complessi.
L’utilizzo di Python presenta i seguenti vantaggi:
- È multipiattaforma (funziona su diversi sistemi operativi come Windows, Mac, Linux)
- Ha una sintassi molto sintetica rispetto a tanti altri linguaggi di programmazione
- Può essere utilizzato in varie modalità: procedurale, orientato agli oggetti o funzionale
Perché utilizzarlo?
Python è un linguaggio interpretato runtime: non c’è bisogno di compilare il nostro programma prima di eseguirlo. Un interprete è un programma che esegue di volta in volta le istruzioni di uno script. Le versioni correntemente utilizzate del linguaggio sono le 2.x e 3.x. Sono disponibili moltissime implementazioni di Python, tra cui spicca l’implementazione predefinita chiamata CPython. Quest’ultima consente anche la compilazione, generando un bytecode prima dell’interpretazione.
Differenze con altri linguaggi
- Non utilizza le parentesi graffe per delimitare blocchi di codice.
- L’indentazione, anziché rendere solo più leggibile il codice, è essenziale per il funzionamento stesso del programma.
- Non utilizza il punto e virgola al termine di ogni statement.
- Utilizza le parole anziché i simboli per specificare operatori logici booleani (and, or, not).
- Non implementa il costrutto switch (utilizzato dagli altri linguaggi per la struttura di controllo condizionale multipla).
- Non implementa il ciclo iterativo postcondizionato do-while.
Python e Java a confronto
Python è nato 4 anni prima di Java, nel 1991. Sono entrambi linguaggi adatti a qualsiasi tipo di utilizzo, ossia general-purpose. Tuttavia, Java è più associato allo sviluppo classico di applicazioni, mentre Python è ampiamente utilizzato per procedure - spesso relative all’amministrazione di sistema - e operazioni scientifiche complesse.
Java è un linguaggio maggiormente orientato alla “programmazione pura”, mentre Python ai “task”, agli script. Java è un linguaggio compilato, mentre Python è interpretato. Entrambi i linguaggi sono di alto livello e piuttosto intuitivi, con una maggiore sinteticità di Python.
Java non ha “vincoli di indentazione” ossia non è necessario indentare il codice per renderlo funzionante, in quanto utilizza le parentesi graffe per delimitarlo, a differenza di Python. Python è più semplice da imparare rispetto a Java, meno strutturato e un po’ meno potente.
Ambiente di sviluppo
Sul sito www.python.org possiamo scaricare e installare il materiale per eseguire i nostri programmi scritti in Python. Python include IDLE, un ambiente di sviluppo integrato che contiene tools per la scrittura del codice ed il debug di interi programmi. I file di codice sorgente Python hanno l’estensione .py.
Creiamo il nostro primo programma
La sequenza “>>>” indica il prompt della console. Essendo un linguaggio interpretato, ogni riga di codice viene eseguita istantaneamente.
Operazioni di base e tipi di dati
Per stampare un contenuto a video utilizziamo la funzione print(). Tuttavia, possiamo anche ottenere in output risultati diretti di calcoli matematici scrivendo l’espressione:
Output:
>>> 8 + 12
20
(Sulla console verrà mostrato direttamente il risultato 20). Gli spazi tra i segni +, - sono opzionali, ma rendono senz’altro più leggibile il codice. Possiamo inoltre utilizzare i seguenti segni:
- * per le moltiplicazioni
- / per le divisioni
- () per determinare quali operazioni devono essere eseguite per prime
Esempio:
>>> 8 * (12 + 8)
160
L’operazione di divisione produce un risultato di tipo decimale (detto float), ad esempio:
>>> (4 + 8) / 2
6.0
Anziché 6. La divisione per 0 in Python produce un errore. Il tipo di un errore viene descritto nell’ultima riga del messaggio che viene mostrato sulla console:
>>> 8 / 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
Floats
I float sono un tipo di dato che rappresenta i numeri decimali come 0.5 o -1.89. Possono essere creati direttamente utilizzando il punto decimale quando digitiamo un valore, o attraverso operazioni come divisioni di interi. Esempio:
>>> 3 / 4
0.75
Un float può anche essere addizionato ad un intero (es. 4 + 2.62) e il risultato sarà automaticamente un numero di tipo float.
Elevamento a potenza
Python supporta anche l’elevamento a potenza. Per farlo, la sintassi è la seguente:
>>> base ** esponente
Esempio:
>>> 2 ** 3
8
Viene calcolato 2 elevato alla terza, quindi 2 x 2 x 2 = 8. Possiamo ad esempio calcolare la radice quadrata di un numero nel seguente modo:
>>> 16 ** (1/2)
4.0
Quoziente e resto
Per calcolare il quoziente di una divisione utilizziamo l’operatore di floor division “//” nel seguente modo:
>>> 20 // 6
3
Per calcolare il resto di una divisione utilizziamo l’operatore modulo “%” nel seguente modo:
>>> 20 % 6
2
Esempio:
>>> 7 % (5 // 2)
1
Nota: viene calcolata prima l’espressione tra parentesi, quindi:
- 5 // 2 = 2 (il quoziente di 5 / 2)
- 7 % 2 = 1 (il resto di 7 / 2)
- Stampa risultato: 1
Stringhe
Per utilizzare il testo in Python utilizziamo le stringhe. Una stringa viene creata racchiudendo il contenuto del testo all’interno di una coppia di virgolette singole o doppie. Solitamente, la console mostra le stringhe con le virgolette singole. Tuttavia, la scelta del delimitatore non ha effetti rilevanti sull’esecuzione del programma.
>>> "Benvenuto al corso!"
'Benvenuto al corso'
>>> 'Cerca sempre il lato positivo'
'Cerca sempre il lato positivo'
Alcuni caratteri non possono essere inclusi direttamente in una stringa. Ad esempio, le doppie virgolette non possono essere inserite in una stringa delimitata già da doppie virgolette, perché ne causerebbe il termine prematuro.
Caratteri come questi possono essere inseriti anteponendo ad essi uno backslash. Esempio:
>>> 'M\'illumino d\'immenso!'
'M’illumino d’immenso!'
\n rappresenta una nuova riga. Il backslash può essere anche utilizzato per caratteri particolari Unicode, tabulazioni, e altri cosiddetti caratteri di escape.
Possiamo anche evitare di scrivere manualmente “\n” per andare a capo in una stringa: è possibile utilizzare delimitatori a virgolette triple, e i newlines verranno creati in automatico quando premiamo Enter per andare a capo.
>>> """Ciao,
come stai?"""
'Ciao,\ncome stai?'
Input
Per l’inserimento di dati in input, è disponibile la funzione input. Questa funzione restituisce sotto forma di stringa il valore inserito dall’utente.
Esempio:
>>> input("Inserisci il tuo nome: ")
Inserisci il tuo nome: (nome che verrà inserito)
I commenti
In ogni linguaggio di programmazione è molto frequente la pratica di commentare il codice. I commenti presentano i seguenti vantaggi:
- Possono essere utilizzati per spiegare il codice sorgente.
- Possono essere utilizzati per rendere il codice più leggibile anche ad altre persone.
- Possono contenere codice che temporaneamente non si vuole eseguire, in base alle necessità di testing del programma.
Per inserire un commento procediamo come segue:
#questo è un commento
print("ciao, come stai?")
Il commento, che inizia dopo il cancelletto, può essere inserito anche a fianco dello statement:
print("ciao") #saluti
I docstrings (stringhe di documentazione)
Per inserire una documentazione che spieghi in più righe il nostro codice procediamo come segue:
"""
questa è
una documentazione
del codice
"""
print("ciao, come stai?")
Indentazione
Python usa l’indentazione, creando spazio vuoto all’inizio di una riga, per delimitare blocchi di codice. Altri linguaggi, come il C, utilizzano le parentesi graffe per la delimitazione dei blocchi. In Python invece non si utilizzano parentesi graffe e l’indentazione è essenziale al funzionamento del programma.
if 8 > 5:
print("8 è maggiore di 5")
print("Programma terminato")
Le variabili
Le variabili sono contenitori che consentono la memorizzazione di valori. Il valore di una variabile, come suggerisce il termine, può variare durante l’esecuzione del programma. Per creare una variabile in Python è sufficiente digitarne il nome ed utilizzare il simbolo = seguito dal valore con cui vogliamo inizializzarla.
Esempio:
>>> x = 10
>>> print(x)
10
>>> print(x+7)
17
Python è case sensitive
Python è case sensitive, ovvero distingue i caratteri minuscoli e maiuscoli. Quindi, se chiamiamo due variabili chiamandole rispettivamente “cognome” e “Cognome”, l’interprete le tratterà come due variabili diverse.
Utilizzare le variabili
Un classico esempio di utilizzo di una variabile è la stampa a video (output). Per fare ciò, ad esempio, possiamo scrivere:
>>> x = 10
>>> y = 8
>>> print(x+y)
'18'
Esempi:
>>> x = 34.5
>>> print(x)
34.5
>>> y = "questa è una stringa"
>>> print(y + "!")
Questa è una stringa!
Se proviamo a riferirci ad una variabile non assegnata otterremo un errore. Per rimuovere una variabile utilizziamo la funzione del seguita dal nome della variabile.
>>> n = input("Inserisci un numero: ")
Inserisci un numero: 8
>>> print(n)
8
>>> del n
>>> n
NameError: name 'n' is not defined
Statements
Ogni istruzione in Python è detta Statement. A differenza di molti altri linguaggi di programmazione, gli statement NON terminano con un punto e virgola.
Corretto:
>>> print("ciao")
'Ciao'
Errato:
>>> print("Ciao");
Regole per i nomi delle variabili
- Possono contenere lettere, numeri e underscores.
- Non possono iniziare con numeri.
- Non possono contenere spazi.
>>> 123abc = 8
SyntaxError: invalid syntax
>>> nome e cognome
SyntaxError: invalid syntax
Alle nostre variabili possiamo assegnare il nome che vogliamo, l’importante è che non sia una parola riservata (non utilizzabile).
Parole riservate in Python
Ogni linguaggio di programmazione ha una serie di parole chiave che non possono essere utilizzate per nominare variabili ecc… Le parole riservate in Python sono le seguenti:
- and
- continue
- else
- for
- import
- not
- raise
- assert
- def
- except
- from
- in
- or
- return
- break
- del
- exec
- global
- is
- pass
- try
- class
- elif
- finally
- if
- lambda
- while
Conversione dei tipi
In Python, è impossibile completare certe operazioni a causa dei tipi di dati coinvolti in esse. Ad esempio, non possiamo sommare due stringhe contenenti i numeri 4 e 6 per ottenere il risultato 10, perché essendo due stringhe verrà eseguita una concatenazione il cui risultato sarà ‘46’.
In questi casi, la soluzione è la conversione del tipo, anche detta “casting”. Ad esempio, per ottenere il valore numerico di una stringa contenente un numero, possiamo convertire la stringa in intero utilizzando la seguente funzione:
int("stringa_da_convertire_in_intero")
Esempio concatenazione e conversione a confronto:
>>> "4" + "6"
'46'
>>> int("4") + int("6")
10
La conversione dei tipi viene spesso utilizzata anche per convertire l’input dell’utente - acquisito come stringa dalla funzione input - in numero (integer/float).
Esempio:
>>> float(input("Inserisci un numero: ")) + float(input("Inserisci un altro numero: "))
Inserisci un numero: 10
Inserisci un altro numero: 8
18.0
Con la funzione str() possiamo convertire una variabile al tipo di dato stringa.
Esempio:
>>> x = 20
>>> str(x)
'20'
Gli operatori
Per operare con i dati abbiamo a disposizione i seguenti tipi di operatori:
- Operatori matematici
- Operatori di assegnazione
- Operatori di comparazione
- Operatori logici (booleani)
- Operatori di stringa
Operatori matematici
Gli operatori matematici a nostra disposizione sono i seguenti:
- + (addizione) 42 + 12 = 54
- - (sottrazione) 42 - 12 = 30
- * (moltiplicazione) 20 * 4 = 80
- / (divisione) 90 / 2 = 45
- % (modulo) 10 % 3 = 1
Incremento e decremento
Gli operatori di incremento e decremento:
- ++ (incremento): utilizzato per incrementare il valore di una variabile
- -- (decremento): utilizzato per decrementare il valore di una variabile
Post incremento: ritorna il valore originale e poi incrementa il valore dell’operando.
Pre-incremento: incrementa il valore e poi lo ritorna.
Post decremento: ritorna il valore originale e poi decrementa il valore dell’operando.
Pre-decremento: decrementa il valore e poi lo ritorna.
Esempi:
# Post incremento a = 0 b = 10 a = b++ # a = 10 e b = 11 # Pre-incremento a = 0 b = 10 a = ++b # a = 11 e b = 11 # Post decremento a = 0 b = 10 a = b-- # a = 10 e b = 9 # Pre-decremento var a = 0, b = 10; var a = --b; # a = 9 e b = 9
Operatore di assegnazione
In Python, il segno uguale è chiamato “operatore di assegnazione”, in quanto ci permette di assegnare un valore ad una variabile.
Ad esempio, x = 10 assegnerà il valore 10 alla variabile di nome x.
Spesso, il valore che verrà assegnato alla variabile sarà il risultato di calcoli e operazioni svolte run-time.
Gli operatori di assegnazione
Gli operatori di assegnazione a nostra disposizione sono:
- = : x = y equivale a x = y
- += : x += y equivale a x = x + y
- -= : x -= y equivale a x = x - y
- *= : x *= y equivale a x = x * y
- /= : x /= y equivale a x = x / y
- %= : x %= y equivale a x = x % y
Gli operatori di comparazione sono utilizzati negli statement logici per definire...
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.