Cominciare ad usare Python - Parte 1
Python è un linguaggio di programmazione multi piattaforma interpretato, interattivo e orientato agli oggetti.
Può essere utilizzato su Windows, Linux, macOS, Azure e altri servizi online.
Prima di poter utilizzare Python è necessario installarlo dal sito ufficiale https://www.python.org/ (l'ultima versione ad oggi è la 3.7.4).
L'installer mette a disposizione anche il comando pip, ovvero il gestore di pacchetti di Python.
Per iniziare ad usare Python, apri la linea di comando (cmd.exe) e digita py (su Windows):quando hai finito, digita quit() per uscire.
In ogni caso il modo migliore per utilizzarlo è usare un editor come Visual Studio Code creando un file con estensione .py.
Una volta creato un file è possibile eseguirlo con la sintassi py .\nome_file.py o python3 .\nome_file.py su Linux
La prima cosa che si può fare è, ad esempio, utilizzare l'istruzione print() per stampare:
Nel caso il nome di variabile sia composto da più parole, la convenzione è quella di scrivere le parole in minuscolo sperate da un underscore:
Una cosa importante da ricordare, non esiste un cast implicito tra più tipi come avviene in JavaScript. Ad esempio questo genera un eccezione:
è sempre necessario specificare un cast esplicito
Servono per:
Hanno a disposizione varie funzioni per modificare il valore, qui sotto alcune di esempio
se invece voglio calcolare la lunghezza di una stringa uso la funzione len()
Tramite la libreria math ho a disposizione altre funzioni come
Se voglio generare numeri casuali posso usare la libreria random
La libreria va prima caricata con l'istruzione from nome_libreria import item1
nel caso avessi una data in formato stringa, posso fare un parse, usando la funzione datetime.strptime()
In Python si ottiene con l'istruzione if - elif - else nella forma
ad esempio
se voglio fare una comparazione case insensitive uso la funzione lower()
l'operatore in è la forma compatta di
dove si vede l'utilizzo dell'operatore or; gli altri operatori disponibili sono and e not.
ad esempio
l'equivalente in JavaScript è
Le differenze principale tra List e Array sono:
posso aggiugere un dictionary ad una lista
o aggiungere una lista ad un dictionary
Le differenze principali tra List e Dictionary sono:
se invece voglio fare un ciclo basato su un numero compreso tra un minimo e massimo, uso al funzione range(start, stop, step)
allo stesso modo posso fare un ciclo con numeri che si decrementano
ad esempio
Nel caso dovessi uscire dal ciclo prima che la condizione di controllo diventi False, posso usare l'istruzione break
Continua a leggere Cominciare ad usare Python - Parte 2
Può essere utilizzato su Windows, Linux, macOS, Azure e altri servizi online.
Prima di poter utilizzare Python è necessario installarlo dal sito ufficiale https://www.python.org/ (l'ultima versione ad oggi è la 3.7.4).
Esistono attualmente due versioni principali, la 2.x e la 3.x, se non avete vincoli particolari, installate l'ultima versione.
Su alcuni sistemi è già presente. Ad esempio alcune versioni di Linux hanno già installato la versione 2.x richiamabile con il comando python, mentre la versione 3.x è richiamabile con il comando python3. Su Windows è richiamabile con il comando py.exe
Tutti gli esempi riportati fanno riferimento alla versione 3.x su Windows.Su alcuni sistemi è già presente. Ad esempio alcune versioni di Linux hanno già installato la versione 2.x richiamabile con il comando python, mentre la versione 3.x è richiamabile con il comando python3. Su Windows è richiamabile con il comando py.exe
L'installer mette a disposizione anche il comando pip, ovvero il gestore di pacchetti di Python.
Su Linux la versione 3.x richiede l'uso del comando pip3, può essere necessario installarlo a parte.
Su Windows 10 il comando python apre lo store di Windows proponendo l'installazione di Python, al momento la versione disponibile è la 3.7. Come dice l'avviso non è detto che siano supportate tutte le caratteristiche, meglio installarlo dal sito ufficiale https://www.python.org/
Per iniziare ad usare Python, apri la linea di comando (cmd.exe) e digita py (su Windows):quando hai finito, digita quit() per uscire.
In ogni caso il modo migliore per utilizzarlo è usare un editor come Visual Studio Code creando un file con estensione .py.
Una volta creato un file è possibile eseguirlo con la sintassi py .\nome_file.py o python3 .\nome_file.py su Linux
Info
Le caratteristiche principali sono:- linguaggio interpretato (come JavaScript in NodeJs)
- variabili non tipizzate (come JavaScript)
- un forte uso dell'indentazione per le istruzioni di test, cicli, funzioni, ecc...
La prima cosa che si può fare è, ad esempio, utilizzare l'istruzione print() per stampare:
Python
>>> print(1 + 2)
3
>>> print("ciao" + " " + "mondo")
ciao mondo
Variabili
Come dicevo le variabili non sono tipizzate, è possibile assegnare qualunque valore semplicemente definendo il nome della variabile e assegnandogli un valorePython
x = 1
y = 2
c = False
print(x + y)
# 3
a = "ciao" # stringa con virgolette doppi
b = 'mondo' # stringa con virgolette singole
print(a + " " + b)
# ciao mondo
A differenza di altri linguaggi come JavaScript non è necessario far precedere la variabile da una keyword come var, let, const oppure dalla definizione del tipo (int, string, double, ...) come avviene in C#
Altra cosa importante: non serve nessun terminatore di linea, come ad esempio il punto e virgola ";" usato da JavaScript o C#
Le stringhe posso esse definite indifferentemente con le virgolette doppie o singole, ma conviene darsi uno standard e utilizzare sempre la stessa convenzione
Nel caso il nome di variabile sia composto da più parole, la convenzione è quella di scrivere le parole in minuscolo sperate da un underscore:
Python
saldo_finale = 234.5
Python
x = 1
a = "3"
print(x + a)
Text
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Python
>>> print(x + int(a))
4
>>> print(str(x) + a)
13
Il simbolo + è usato sia come operatore di somma, nel caso di operandi numerici, oppure come operatore di concatenamento nel caso di stringhe.
Commenti
Come in tutti i linguaggi i commenti sono importanti è indispensabili.Servono per:
- commentare momentaneamente alcune parti del codice non più necessarie o momentaneamente non necessarie (debug)
- chiarire alcune parti del codice
- ricordarci cosa abbiamo fatto a distanza di tempo
- aiutare i colleghi quando dovranno intervenire sul nostro codice
I commenti sono molto importanti quindi vanno usati.
In Python i commenti iniziano con il carattere sharp/cancelletto #Python
a = "ciao" # commento in linea
# le seguente istruzione è solo di debug, abilitare se serve
# print("valore di a: " + a)
# questo è un esempio di commento
# e questa è un altra linea di commento
print("commento")
Per convenzione e leggibilità, va lasciato uno spazio dopo il carattere #
Stringhe
Le stringhe, come già accennato, possono essere definite sia tra due apici singoli che tra due doppi apici.Hanno a disposizione varie funzioni per modificare il valore, qui sotto alcune di esempio
Python
>>> mia_stringa = "ciao mondo"
>>> mia_stringa.upper()
'CIAO MONDO'
>>> mia_stringa.lower()
'ciao mondo'
>>> mia_stringa.capitalize()
'Ciao mondo'
>>> mia_stringa.count()
TypeError: count() takes at least 1 argument (0 given)
>>> mia_stringa.count("0")
3
>>> mia_stringa
'ciao mondo'
Python
>>> len(mia_stringa)
10
Formattazione
Per scenari più complessi, dove non devo semplicemente concatenare due stringhe, ma formattarle secondo un pattern specifico, posso usare 3 formalismi tramite l'uso delle parentesi graffePython
x = 1
y = 3
# primo esempio: segue l'ordine posizionale dei parametri
"Risultato: {} + {} = {}".format(x, y, x + y)
# secondo esempio: indico esplicitamente la posizione del parametro da usare
"Risultato: {1} + {2} = {0}".format(x + y, x, y)
# terzo esempio: solo python3, inserisco direttamente le variabili in linea
f"Risultato: {x} + {y} = {x+ y}"
# in tutti i casi il risultato è questo
# 'Risultato: 1 + 3 = 4'
Nell'ultimo esempio la stringa è preceduta dalla lettera f minuscola e le variabile sono inserite direttamente all'interno delle parentesi graffe
Se voglio inserire un ritorno a capo nella stringa posso usare la sequenza di escape \nPython
print("riga1\nriga2")
Numeri
Per gestire i numeri ci sono i seguenti operatori:- + (somma)
- - (sotrazione)
- * (moltipicazione)
- / (divisione)
- // (divisione intera)
- % (resto della divisione)
- ** (elevamento a potenza)
Python
# converte la stringa "1234" nel numero 1234
int("1234")
# converte la stringa, con separatore decimale, "1.234" nel numero 1.234
float("1.234")
# la seguente istruzione genera un eccezione,
# non posso convertire una string che rappresenta un float in int
int("1.234")
# ValueError: invalid literal for int() with base 10: '1.234'
# devo fare la conversione in due passaggi
int(float("1.234"))
# ritorna 1
Python
# import di tutta la libreria
import math
# calcolo radice quadrata
math.sqrt(9)
# 3.0
# arrotondamento per eccesso
math.ceil(3.45)
# 4
# arrotondamento per difetto
math.floor(3.45)
# 3
math.pi
# 3.141592653589793
Python
import random
# numero casuale tra 1 e 10
print(random.randint(1, 11))
Con la sintassi import nome_libreria importo completamente tutta la libreria
Valori boleani
I valori boleani possono assumere il valore True o False e possono essere combinati con gli operatori logici: and, or e not.Attenzione, rispetto a JavaScript o C#, le keywors True / False hanno la lettera iniziale Maiuscola
Date
Ovviamente spesso si ha a che fare anche con i valori di tipo data e ora. Python mette a disposizione una specifica libreria (standard) per gestire questo tipo di dato di nome datetime.La libreria va prima caricata con l'istruzione from nome_libreria import item1
Python
from datetime import datetime
# from datetime import datetime, timedelta
La sintassi from nome_libreria import item1, item2, ..., a differenza della precedente import nome_libreria, non importa tutta la libreria, ma solo le parti indicate dopo la keyword import
dopo l'import posso usare la libreriaPython
# data ora corrente
now = datetime.now()
print(now)
# 2019-10-06 23:52:36.458734
# se devo concatenerla ad una stringa devo fare il cast con str()
print("Adesso: " + str(now))
# posso prendere solo alcune parti
f"Data: {now.day}/{now.month}/{now.year}"
# 'Data: 6/10/2019'
Python
str = input("Che giorno è oggi? (gg/mm/aaaa) ")
# Che giorno è oggi? (gg/mm/aaaa) 06/09/2019
dt = datetime.strptime(str , "%d/%m/%Y")
print(dt)
# 2019-09-06 00:00:00
Input
Oltre a visualizzare delle informazioni con print(), posso anche richiede un input all'utente tramite la funzione input()Python
x = input("primo numero: ")
# primo numero: 1
y = input("secondo numero: ")
# secondo numero: 3
f"Somma di {x} + {y} = {x + y}"
# 'Somma di 1 + 3 = 13'
Istruzioni condizionali
In qualsiasi programma vi è sempre la necessità di condizionare il flusso del codice in base a delle espressioni logiche. Il risultato True o False di queste espressioni, permette di eseguire una parte di codice o meno.In Python si ottiene con l'istruzione if - elif - else nella forma
Python
if espressione_logica_1:
istruzioni da eseguire se espressione_logica_1 è vera
eventuali altre istruzioni
elif espressione_logica_2 e:
istruzioni da eseguire se espressione_logica_2 è vera
eventuali altre istruzioni
elif espressione_logica_N e:
istruzioni da eseguire se espressione_logica_N è vera
eventuali altre istruzioni
else:
istruzioni eseguite se nessuna condizione è vera
eventuali altre istruzioni
Python
x = input("Inserisci un numero: ")
if x < 0:
# se espressione "if" è vera
print("negativo")
elif x > 0:
# se espressione "elif" è vera
print("positivo")
else:
# se nessuna condizione è vera
print("zero")
Attenzione all'indentazione, in Python è fondamentale per la corretta esecuzione del codice.
A differenza di altri linguaggi, non ci sono istruzioni, then else endif come in Visual Basic, oppure caratteri separatori, parentesi graffe ({}) o punto e virgola (;) come in C#, per identificare quali istruzioni sono all'interno dei singoli blocchi dell'if - elif - else.
L'unica discriminante è l'Indentazione, quindi è molto importante usare sempre lo stesso sistema di indentazione, ovvero usare sempre gli spazi oppure sempre il tab. Anche in questo caso usa sempre la stessa convenzione univoca e mantienila nel tempo, altrimenti potrebbero verificarsi dei comportamenti inaspettati del codice.
A differenza di altri linguaggi, non ci sono istruzioni, then else endif come in Visual Basic, oppure caratteri separatori, parentesi graffe ({}) o punto e virgola (;) come in C#, per identificare quali istruzioni sono all'interno dei singoli blocchi dell'if - elif - else.
L'unica discriminante è l'Indentazione, quindi è molto importante usare sempre lo stesso sistema di indentazione, ovvero usare sempre gli spazi oppure sempre il tab. Anche in questo caso usa sempre la stessa convenzione univoca e mantienila nel tempo, altrimenti potrebbero verificarsi dei comportamenti inaspettati del codice.
Operatori di comparazione
Gli operatori di comparazione disponibili sono:- > (maggiore)
- < (minore)
- <= (minore o uguale)
- >= (maggiore o uguale)
- == (uguale)
- != (diverso)
Python
if frutta in ('mele', 'pere', 'arancie'):
print("OK")
Python
if frutta.lower() in ('mele', 'pere', 'arance'):
print("OK")
Python
if frutta == 'mele' or frutta == 'pere' or frutta == 'arance':
print("OK")
Fai attenzione al due punti (:) che compare alla fine della riga con l'espressione logica di confronto, è fondamentale come l'indentazione.
Operatore ternario
Anche in Python esiste l'operatore ternario nella formaPython
valore_Vero if espressione else valore_Falso
Python
>>> print(4 if True else 5)
4
>>> print(4 if False else 5)
5
>>> y = 4
>>> x = "Positivo" if y >= 0 else "Negativo"
>>> print(x)
Positivo
JavaScript
espressione ? valoreVero : valoreFalso
Collection
Come altri linguaggi, Python, supporta vari tipi di collection come: Liste, Array e DizionariListe / List
Le liste si creano delimitando i valori in parentesi quadre [ ... ]Python
lista_vuota = []
lista_citta = ["Milano", "Como", "Bergamo"]
print(lista_citta)
# ['Milano', 'Como', 'Bergamo']
# aggiungo valori alla lista
lista_citta.append("Verona")
print(lista_citta)
# ['Milano', 'Como', 'Bergamo', 'Verona']
print(lista_citta[1]) # secondo elemento della lista
# como
lista_citta.insert(0, "Torino") # inserisce un valore all'inizio
# ['Torino', 'Milano', 'Como', 'Bergamo', 'Verona']
len(lista_citta)
# 5
lista_citta.sort()
print(lista_citta)
# ['Bergamo', 'Como', 'Milano', 'Torino', 'Verona']
print(lista_citta[2:3]) # dal terzo elemento al quarto
#['Milano', 'Torino']
Array
Per usare gli Array, deve prima essere importata la libreria arrayPython
from array import array
vari = array("f") # array di float (f)
vari.append(11)
vari.append(12.5)
vari.append(4.75)
print(vari)
# array('f', [11.0, 12.5, 4.75])
print(vari[-1]) # ultimo elemento
# 4.75
- List: può contenere qualunque tipo di dato
- Array: può contenere solo tipi semplici, come i numeri, inoltre devono essere tutti dello stesso tipo
Dictionary
Un Dictionary è una collection composta da una serie di chiavi e valori compresi tra le parentesi graffe { ... }Python
persona = {"nome": "Alberto", "citta": "Monza"} # creo un dictionary
print(persona)
# {'nome': 'Alberto', 'citta': 'Monza'}
print(persona["nome"])
# Alberto
persona["login"] = "local\\alberto" # aggiungo una coppia chiave=valore
print(persona)
# {'nome': 'Alberto', 'citta': 'Monza', 'login': 'local\\alberto'}
Python
lista_citta.append(persona)
print(lista_citta)
# ['Bergamo', 'Como', 'Milano', 'Torino', 'Verona', {'nome': 'Alberto', 'citta': 'Monza', 'login': 'local\\alberto'}]
Python
persona["numeri"] = [1, 3, 7]
print(persona)
# {'nome': 'Alberto', 'citta': 'Monza', 'login': 'local\\alberto', 'numeri': [1, 3, 7]}
- List: indicizzazione degli elementi partendo dal valore zero, l'ordine è quello di inserimento
- Dictionary: è un elenco di coppie composte da chiave e valore, l'ordine con cui sono persistite, normalmente, non coincide con quello di inserimento
Cicli
Il cicli possono essere gestiti con for o con whilefor
Le sintassi per il for sono due:- for variabile in collection
- for variabile_indice in range(start, stop, step)
Python
# sintassi basata sulle collection
lista_citta = ['Milano', 'Como', 'Bergamo', 'Verona']
for citta in lista_citta:
print(citta)
# altre istruzioni all'interno del ciclo
# da come risultato
Milano
Como
Bergamo
Verona
Python
for n in range(3, 8):
print(n)
# da come risultato
3
4
5
6
7
Python
for n in range(10, 1, -2):
print(n)
# da come risultato
10
8
6
4
2
while
Viene esegue il ciclo finché l'espressione di controllo è veraPython
while espressione_controllo:
istruzioni
modifica_espressione_controllo
Python
n = 0
while n < 5:
print(n)
n = n + 1
# da come risultato
0
1
2
3
4
Python
lista_citta = ['Milano', 'Como', 'Bergamo', 'Verona']
cerca = "como"
# esempio di find
n = 0
while n < len(lista_citta):
citta = lista_citta[n]
print(citta)
if citta.lower() == cerca.lower():
print(f"Trovato '{cerca}', esco dal ciclo")
break
n = n + 1
# da come risultato
Milano
Como
Trovato 'como', esco dal ciclo
Anche nel caso dei cicli, fai attenzione all'indentazione e ai due punti (:) dopo l'espressione di controllo. Questi due aspetti sono essenziali per il corretto funzionamento.
Continua a leggere Cominciare ad usare Python - Parte 2