02. Valori e Operatori Numerici
Nella lezione precedente abbiamo visto come installare Python su Windows e abbiamo detto che verosimilmente, su Linux e Mac OS Python si trova già installato. Quanto vedremo d'ora in avanti sarà pienamente compatibile tra i diversi sistemi operativi perché le istruzioni saranno le stesse.
In questa lezione vedremo come usare Python, introdurremo i due primi tipi di dato del corso, integer e float, e parleremo di valori e operatori.
Come si "usa" Python?
Anzitutto diciamo che è possibile utilizzare Python anche da un semplice terminale di sistema. Possiamo usare i comandi python o py su Windows, e python o python3 su Linux e Mac OS.
Visual Studio Code
Per la scrittura di programmi e script, nella gran parte delle lezioni di questa serie noi abbiamo utilizzato Visual Studio Code, un editor di codice open source sviluppato da Microsoft e compatibile con Windows, Linux e MacOS. Vi consigliamo di provarlo perché ha tantissime funzionalità che semplificano notevolmente la vita degli sviluppatori: è completamente personalizzabile, permette di lavorare contemporaneamente su più script e ha funzionalità utilissime come il debugging integrato, l'integrazione con Git e tante altre.
Soprattutto è possibile installare moltissimi plugin ed estensioni per espandere le funzionalità dell'editor, supporta moltissimi linguaggi di programmazione oltre a Python ed è perfetto per gestire progetti complessi. Vedremo come utilizzarlo più avanti nel corso.
IDLE
Se vi state avvicinando per la prima volta al mondo del linguaggio Python potete usare anche IDLE, acronimo di Integrated Development and Learning Environment, traducibile come ambiente di sviluppo e apprendimento integrato. Troverete IDLE di default su Windows in quanto fa parte del pacchetto di installazione di Python, mentre su Linux e Mac OS potreste doverla installare separatamente.
Tuttavia è bene precisare che IDLE mette a disposizione una "versione ottimizzata" (per l'apprendimento) della stessa shell interattiva che si può ottenere richiamando Python da terminale con uno dei comandi citati in precedenza, e che quindi tutti i comandi che daremo saranno identici.
Qualora vi troviate su Linux o Mac OS e non vogliate installare IDLE, potete seguire il corso da una qualsiasi shell.
La Shell Interattiva
La Shell Interattiva di Python esegue le istruzioni una alla volta man mano che queste vengono inserite dagli utenti.
È comoda per fare semplici calcoli o per sperimentare, imparando cosa facciano le diverse istruzioni di Python. 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() ci restituisce il famoso Hello World, che è tradizionalmente il primo programma che viene lanciato in ciascun linguaggio di programmazione. Complimenti, avete ufficialmente scritto la vostra prima riga di codice Python!
Come commentare in Python
I commenti di Python permettono di inserire del testo all'interno del codice sorgente che viene ignorato dall'interprete Python. Vengono utilizzati per descrivere il codice e per renderlo più comprensibile sia agli sviluppatori che lavorano in team sia a chi scrive codice da solo, perché dopo un po’ di tempo è facile dimenticarsi dettagli utili riguardo ai propri script e fa comodo avere dei punti di riferimento.
Per inserire un commento in Python, basta utilizzare il carattere # all'inizio di unariga: tutto ciò che lo segue (sulla stessa riga) non verrà eseguito. Ad esempio, se vogliamo inserire un commento per descrivere una variabile x, possiamo scrivere:
# Inizializziamo la variabile x a 0
x = 0
Si possono inserire commenti anche all'interno del codice. Questo può essere utile per spiegare parti specifiche del codice o per disabilitare temporaneamente alcune righe di codice mentre si scrive (come durante il debugging). Ad esempio:
x = 2 # Inizializziamo la variabile x a 2
# Commentiamo la riga che segue per disabilitarla temporaneamente
# x = 3
print(x)
# output
2
In questo caso, il commento sulla seconda riga disabilita temporaneamente l'assegnazione della variabile x e la stampa del valore della variabile x sarà 2.
È comunque consigliabile evitare di scrivere commenti superflui o ovvi: dovrebbero essere utili e fornire informazioni aggiuntive, come il ragionamento dietro una particolare implementazione o la logica di un algoritmo o la segnalazione di eventuali problemi o bug.
Vedremo più avanti anche un altro modo per commentare il codice e fornire informazioni, soprattutto per quanto riguarda lo scopo di classi e funzioni: le docstring.
Espressioni, Valori e Operatori
Con la shell di Python possiamo effettuare anche semplici Operazioni Numeriche. Scrivete 3 + 3 e date Invio:
>>> 3 + 3
# output
6
Ecco che otteniamo il risultato istantaneamente.
Questa è definita un'espressione, con i numeri chiamati valori e il simbolo del + chiamato operatore: questo è importante perché ci inizia a predisporre mentalmente per pensare al codice come a un insieme di istruzioni dove a ciascuna corrisponde corrisponde un ruolo ben preciso.
Come vedremo, nel mondo della programmazione esistono diversi tipi di valori e operatori, non solo numerici. Per ora, proseguiamo imparando il resto degli operatori numerici, anche perché ci sono alcune considerazioni da effettuare.
Come intuibile, usiamo il simbolo - per effettuare sottrazioni:
>>> 6 - 3
# output
3
Lo slash avanti / per effettuare divisioni:
>>> 9 / 3
# output
3.0
Mentre l'operatore per la moltiplicazione è l'asterisco *:
>>> 5 * 5
# output
25
Attenzione a non confondere l'asterisco con una x, in quanto questa non è un operatore valido in Python!
Usare una x per tentare di effettuare moltiplicazioni porterà al manifestarsi di errori di programmazione, di cui parleremo più avanti nel corso.
>>> 5 x 5
# output
SyntaxError: invalid syntax
In questi primi esempi abbiamo usato valori appartenenti al primo tipo di dato di Python: l'integer o intero.
I numeri con la virgola sono invece chiamati float.
Float e Integer sono due tipi di dato di Python.
Per definire un float utilizziamo un punto al posto della virgola.
>>> 0.25
Otteniamo inoltre sempre un float come risultato di una divisione numerica:
>>> 9 / 3
# output
3.0
La funzione integrata type()
Ora, come fare a riconoscere i vari tipi di dato di Python? Chiaramente durante questo corso impareremo a riconoscerli e a usarli, ma come fare ciò tramite Python?
Su Python, per fare ciò possiamo usare la funzione integrata type(). Creiamo una variabile (parleremo di variabili nel dettaglio più avanti nel corso) chiamata x e assegniamo a questa il numero intero 69.
Possiamo quindi passare x alla funzione type() per far sì che Python ci dica che tipo di dato contiene:
>>> x = 69
>>> type(x)
# output
<class 'int'>
Chiaramente ci riferisce che si tratta di un intero! Ma proviamo ora a cambiare il valore da 69 a 4.80 e richiamiamo nuovamente la funzione type():
>>> x = 4.80
>>> type(x)
# output
<class 'float'>
Ed ecco che ora ci troviamo proprio un float!
Oltre alle quattro operazioni fondamentali, Python vi semplifica il lavoro coi numeri permettendovi di effettuare altre operazioni, ciascuna con un suo operatore specifico.
Per effettuare un calcolo esponenziale usiamo come operatore **:
>>> 3 ** 3
27
Possiamo effettuare "divisioni intere" tramite un operatore detto floor division, rappresenato in Python da //:
>>> 30 // 7
4
E infine possiamo ottenere il resto di una divisione utilizzando un operatore chiamato modulo, rappresentato dal simbolo %:
>>> 30 % 7
2
La funzione isinstance()
Un’altra funzione integrata molto utile per il confronto dei tipi di dato in Python è isinstance(). Questa funzione viene utilizzata per verificare se un oggetto è di un certo tipo o se è una sottoclasse di quel tipo. La sintassi è la seguente:
isinstance(object, type)
Dove object è l'oggetto da verificare e type è il tipo o la classe da confrontare.
NOTA: Parleremo nel dettaglio di oggetti e classi nelle lezioni dedicate alla programmazione a oggetti, per ora ci basta sapere che in Python tutto è un oggetto, e il tipo di un oggetto definisce il suo comportamento e le operazioni che possono essere eseguite su di esso.
La funzione isinistance() restituisce True (in italiano Vero) se l’oggetto è di dello stesso tipo di type o una sua sottoclasse, altrimenti restituisce False (in italiano Falso). Ad esempio:
>>> x = 5
>>> isinstance(x, int)
# output
True
La funzione verifica se la variabile x è di tipo int: dal momento che x è 5, la funzione restituisce True e viene stampato il messaggio.
True e False sono un tipo di dato di cui parleremo nel dettaglio quando ci occuperemo di logica booleana.
isinstance() è molto utile quando è necessario verificare il tipo di un oggetto prima di eseguire un'operazione su di esso: ad esempio si potrebbe utilizzare per verificare se un valore inserito dall'utente è di tipo numerico prima di eseguire un calcolo matematico.
Gli Operatori Numerici che abbiamo visto sono:
- addizione: +
- sottrazione: -
- divisione: /
- moltiplicazione: *
- esponente: **
- quoziente: //
- resto: %