Primi passi
Questa pagina cerca di aiutare a muovere i primi passi con il linguaggio di programmazione Python. In particolare, guida alla prima installazione e a configurare il sistema in modo da poter seguire e partecipare ai laboratori.
Installare il software
Tipicamente questo passaggio dovrebbe essere necessario su una macchina privata, dato che le macchine dei laboratori dovrebbero già essere configurate.
Che software usiamo?
- Python 3 - nella versione installata con il gestore Anaconda (versione >=4.4, che include Python 3.6)
- Un editor di testi - NON un editor di documenti come Word - per scrivere i nostri programmi in Python. Consideriamo due diverse alternative: IDLE (l'edtor incluso nell'installazione standard di Python) e Spyder (l'editor incluso in Anaconda). Comunque, qualsiasi editor di testi va bene (notepad, notepad++, gedit, atom e simili).
Scaricare il software e installare
A seconda della versione del nostro PC (32-bit o 64-bit) e del nostro sistema operativo (Windows,
MacOS, Linux), scarichiamo il giusto pacchetto dal sito
https://www.anaconda.com/download/ e installiamo seguendo le indicazioni che ci forniscono.
Usare il terminale e l'editor
Per questa pagina useremo Anaconda installato sotto Windows. Abbiamo l'opportunità di usare l'editor IDLE o l'editor Spyder. In realtà, Spyder è un software molto più complesso di IDLE, dato che ---come vedremo--- include molte funzionalità in più di un semplice editor di testi.
Dal menu di Windows, cerchiamo la cartella Anaconda e selezioniamo
Anaconda Prompt.
In questo modo si aprirà una finestra scura in cui possiamo inserire del testo.
Questa finestra si chiama
terminale e mostra la riga di comando (command line).
DIVAGAZIONE: il nome "terminale" deriva dal fatto che tale software svolge la stessa funzione dei vecchi terminali, ovvero macchine degli inizi dell'era informatica, il cui unico scopo era quello di fare da tramite tra l'operatore umano e il main-frame, ricevendo i comandi (l'input) dall'operatore e l'esito del comando (l'output) dal mainframe. Il terminale è l'interfaccia che usiamo per interagire con il nostro sistema operativo e con il quale possiamo svolgere le stesse funzioni dell'interfaccia grafica, ovvero avviare applicazioni, copiare e maneggiare i file e, in generale, cambiare la configurazione del nostro sistema.
La riga di comando include un cursore lampeggiante dopo una riga del tipo C:\Users\Angelo>, che indica il fatto di essere pronto a ricevere i nostri comandi. Tale riga è la directory corrente della riga di comando ed è molto importante dato che determina il modo in cui possiamo indicare i programmi da eseguire. Noi vogliamo eseguire l'editor IDLE e pertanto digitiamo
idle seguito da invio e aspettiamo.
(C:\Users\Angelo\Anaconda3\) C:\Users\Angelo>idle
In questo modo abbiamo chiesto al sistema operativo di avviare il programma con nome idle.exe. Si aprirà una finestra bianca con un prompt diverso da quello del terminale.
ATTENZIONE ATTENZIONE!! Se l'invocazione di idle ritorna un errore di comando non trovato, allora non abbiamo eseguito la riga di comando di Anaconda. Questo perché i programmi che abbiamo installato con Anaconda NON SONO conosciuti dalla riga di comando di Windows, ma devono essere manualmente inclusi, ovvero sono inclusi nel prompt di Anaconda. Più precisamente, il percorso nel filesystem in cui sono i file degli eseguibili non è incluso nella variabile di ambiente PATH, che contiene la lista di percorsi utilizzata dalla riga di comando per cercare i file degli eseguibili.
Tale riga di comando, adesso, è la nostra interfaccia con l'inteprete python! Qui possiamo inserire i nostri comandi python e saranno eseguiti. Per aprire l'editor, adesso, selezioniamo dal menu
File->New File e si aprirà, finalmente, il nostro editor di testi. L'editor di testi è diverso da un editor di documenti (word processor): Microsoft Word o Google Docs o Apple Pages o qualsiasi editor di documenti sono in grado di produrre e formattare bellissimi documenti, ma non sono progettati per mostrare e accedere al contenuto reale di un file. Quando creiamo un documento, vengono impiegati tanti caratteri che, in realtà, non sono mostrati a video, i cosiddetti caratteri speciali e le informazioni di formattazione. Per i nostri programmi python, tali informazioni non vanno bene. Il nostro python (e in generale un qualsiasi linguaggio di programmazione) ha bisogno di file con testo puro (
raw text), ovvero sequenze di carattari. Gli editor di testi sono in fatti in modo da generare esattamente tali tipi di file.
Inseriamo del testo nella finestra dell'editor...
e salviamo il nostro nuovo file:
File->Save As.... Questo ci mostrerà una nuova finestra che ci permette di scegliere dove salvare il nostro file. Selezioniamo Documenti e la directory Python Scripts e scegliamo un nome per il file (esempio
hello.py).
Adesso nella finestra dell'editor, vediamo che è cambiato il titolo e mostra il percorso completo del nostro nuovo file (C:/Users/Angelo/Documents/Python Scripts/hello.py).
E' importante osservare bene i percorsi dei file poiché la riga di comando ha bisogno di sapere dove sono i file che vogliamo usare come input, come vedremo più avanti.
Ricapitolando, dovremmo avere aperto tre finestre:
- Il terminale con il prompt della riga dei comandi (schermo nero)
- Il prompt dell'interprete python (schermo bianco)
- L'editor di testi.
NOTA: l'utilizzo di IDLE come editor è solo una delle possibili scelte che abbiamo. Possiamo, infatti, usare un qualsiasi editor di testi che sia in grado di evidenziare la sintassi di python e salvare i file in un formato che python possa interpretare.
Usare la command line
Come abbiamo detto qualsiasi cosa possiamo fare con l'interfaccia grafica, possiamo farla con il terminale. Per usare python è bene conoscere un po' meglio la command line.
La cosa principale da conoscere è il concetto di
directory corrente (o anche
working directory), che viene spesso visualizzata direttamente nel prompt della riga di comando. Ad esempio, la nostra riga di comando in Windows è:
C:\Users\Angelo\Documents\Python Scripts>
allora la directory corrente è la directory Python Scripts, all'interno della directory Documents, all'interno della directory Angelo, all'interno della directory Users del disco C:.
NOTA: in Linux e
MacOS, il prompt è tipicamente diverso poiché non viene mostrato il disco e la directory è relativa alla home dell'utente. Per cui, per conoscere la working directory in maniera univoca bisogna usare il comando
pwd (print working directory). Quindi, ammesso che il nostro utente si chiami angelo:
mypc:Documents/Python Scripts angelo$ pwd
/home/angelo/Documents/Python Scripts
mypc:Documents/Python Scripts angelo$
La prima cosa utile da sapere della riga di comando è che mette a disposizione molti comandi da tastiera che rendono rapido il suo uso. In particolare:
- l'auto-completamento con il tasto TAB, che consente di aiutare a completare automaticamente i nomi dei file e dei comandi (ad esempio se iniziamo a scrivere "cd Doc" e premiamo il tasto TAB --quello sopra il CAPS Lock-- la riga di comando completa da solo il comando "cd Documents"). Immaginiamo la comodità se il nome del file che vogliamo scrivere è qualcosa tipo user_assignments_settings_with_fixed_names_v.1.4.05-rev3.12.json o peggio...
- la navigazione della storia, che consiste nel memorizzare tutti i comandi eseguiti e consente di richiamare i comandi inseriti in precedenza per eseguirli di nuovo o alterarli prima di eseguirli.
Per usare propriamente la riga di comando due comandi in particolare sono importanti:
- dir (ls in linux/MacOS) - che serve per listare tutti i file nella directory corrente
- cd - che sta per change directory, che serve per cambiare la directory corrente.
Per cui, ogni volta che vogliamo controllare che il file che vogliamo eseguire sia nella directory corrente, possiamo usare dir (o ls) ed eventualmente cd per cambiare directory.
Il comando cd può essere usato per cambiare la directory corrente, spostandosi all'interno delle directory del nostro sistema. Viene utilizzato specificando il nome della directory in cui vogliamo spostarci. Quindi se siamo all'interno della directory C:\Users\Angelo e vogliamo passare nella directory Documents, dobbiamo semplicemente usare il nome della directory:
C:\Users\Angelo> cd Documents
C:\Users\Angelo\Documents>
Per tornare alla directory precedente, usiamo il nome speciale composto da due punti ..:
C:\Users\Angelo\Documents> cd ..
C:\Users\Angelo>
La sintassi di cd in Linux e
MacOS è identica.
Perché è importante conoscere la directory corrente della riga di comando? Perché quando vogliamo eseguire un programma python dobbiamo essere sicuri che
il file da eseguire sia nella directory corrente. Alternativamente, dobbiamo specificare a python
l'intero percorso del file, comprese tutte le sotto-directory.
Esempio: per eseguire il file hello.py che abbiamo creato prima, potremmo usare i seguenti comandi (che sono equivalenti)
C:\Users\Angelo\Documents\Python Scripts> python hello.py
C:\Users\Angelo>python "C:\Users\Angelo\Documents\Python Scripts\hello.py"
ATTENZIONE!! Poiché il file hello.py che abbiamo creato prima NON contiene codice python, otteremo un'errore... INOLTRE, nella seconda versione del comando abbiamo dovuto usare le virgolette poiché era presente un carattere di spazio nel nome di una delle directory (Python Scripts). INFINE, se abbiamo Linux o MacOS i due comandi sarebbero leggermente diversi, poiché le directory si indicano con lo slash (/), invece che con il backslash (\).
Uso di Python
Python è un linguaggio di programmazione di tipo interpretato e ha una riga di comandi interattiva esattamente come quella che abbiamo per interagire con il sistema operativo. Una delle finestre che abbiamo aperto è esattamente questa riga di comandi e ci serve per iniziare a inserire qualche comando python.
Come si vede, il prompt è diverso ed è composto da tre simboli di maggiore >>>
Possiamo sperimentare qualche operazione aritmetica. Ricordiamo che alcuni degli operatori che python mette a nostra disposizione sono:
- + per la somma
- - per la differenza
- * per i prodotto
- / per la divisione in virgola mobile
- // per la divisione intera
- % per il resto della divisione intera
- ** per l'elevamento a potenza
- () le parentesi per cambiare la priorità degli operatori
Facciamo qualche prova...
>>> 7*3
21
>>> 5/2
2.5
>>> 5//2
2
>>> 5%2
1
>>> 5**2
25
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>> 5*(4+3)/2
17.5
>>>
Python mette a disposizione il concetto di funzione, ovvero un modo molto pratico per definire una serie di istruzioni da ripetere. Inoltr, python offre tantissime funzioni che aiutano a scrivere dei programmi utili. Una delle funzioni che useremo spessissimo è la funzione
print, ovvero la funzione che stampa a video qualcosa. Quando vogliamo usare una funzione in python dobbiamo sempre usare le parentesi tonde. Quindi possiamo chiedere a python di stampare a video la stringa Hello world! usando le parentesi tonde e le virgolette per definire una stringa nel seguente modo:
>>> print("Hello world!")
Hello world!
>>>
Possiamo anche chiedere a python di stampare una stringa e il risultato di un'operazione:
>>> print ("Zero", 4+4-4-4)
Zero 0
>>>
Eseguire un programma python
Usiamo adesso il nostro editor di testi per scrivere il nostro programma. Cambiamo il testo del file hello.py con questo contenuto:
print("Hello world!")
che stampa a video la stringa "Hello world!". Come possiamo vedere, i caratteri che abbiamo inserito sono colorati in maniera diversa, perché l'editor IDLE ci aiuta a distinguere la sintassi di python: i nomi delle funzioni sono di un colore, i simboli sono di un altro e le stringhe di un altro ancora. Salviamo il file dal menu di IDLE
File->Save.
Adesso possiamo eseguire il nostro programma (che, ricordiamo è stato salvato come C:/Users/Angelo/Documents/Python Scripts/hello.py). Dalla riga di comando assicuriamoci di essere nella directory giusta --nel caso usiamo cd per spostarci-- e digitiamo dir (o ls) per essere sicuri che il file sia lì.
E adesso possiamo eseguire il programma eseguendo il comando che abbiamo introdotto prima:
C:\Users\Angelo\Documents\Python Scripts> python hello.py
Hello world!
C:\Users\Angelo\Documents\Python Scripts>
Abbiamo eseguito un programma che stampa una stringa.
Possiamo adesso creare qualsiasi altro programma python semplicemente selezionando dal nostro interprete python il comando
File->New File.
Esercitazione
Cerchiamo di scrivere un programma per ognuno dei seguenti problemi:
- somma dei prodotti di un parametro per una lista di valori
- stringa contenente i prodotti di un valore per una lista di numeri
- giustificazione a destra di un numero in un campo stringa
- somma dei numeri interi contenuti in una stringa
- conversione dalla tripla Ghz, Khz, Hz a numero
- ripetizione di stringhe
- conversione da numero di byte alla quadrupla GB, MB, KB, B
Sfida in python!
Inseriamo nell'editor in un nuovo file questo testo (facciamo copia e incolla)
# Four fours challenge
# Filename: fourfours.py
# Problem description: The four fours challenge!
from math import *
print("Zero is", 4+4-4-4)
e salviamo il nuovo file con il nome fourfours.py. Adesso possiamo eseguire il file e vedere che stampa "Zero is 0".
La sfida consiste nello scrivere un programma che stampa a video tutti i numeri da 0 a 20 usando sempre e soltanto e comunque quattro 4... Vanno bene anche numeri con decimali (ovvero
1.0, 2.0
etc.) e frazionari (ovvero
0.4, 0.19
).
Poiché abbiamo usato la riga
from math import *
, per affrontare la sfida possiamo usare anche due funzioni matematiche fondamentali, ovvero il fattoriale (
factorial
) e la radice quadrata (
sqrt
): avremo, ad esempio, che
factorial(5)
ritorna 5!=5*4*3*2*1=120 e che
sqrt(9)=3
.
--
Angelo Spognardi - 2017-10-03
Comments