Il 0% ha trovato utile questo documento (0 voti)
0 visualizzazioni40 pagine

03.01 - Python Un'introduzione

Il documento fornisce un'introduzione al linguaggio di programmazione Python, evidenziando le sue caratteristiche principali come la tipizzazione dinamica, la gestione della memoria tramite garbage collection e l'uso di moduli. Vengono descritti i tipi di dati fondamentali, le strutture di contenimento come tuple, liste e dizionari, e le funzioni per l'input e la formattazione delle stringhe. Infine, si sottolinea l'importanza delle parole chiave e della libreria nativa per la scrittura di programmi complessi.
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
0 visualizzazioni40 pagine

03.01 - Python Un'introduzione

Il documento fornisce un'introduzione al linguaggio di programmazione Python, evidenziando le sue caratteristiche principali come la tipizzazione dinamica, la gestione della memoria tramite garbage collection e l'uso di moduli. Vengono descritti i tipi di dati fondamentali, le strutture di contenimento come tuple, liste e dizionari, e le funzioni per l'input e la formattazione delle stringhe. Infine, si sottolinea l'importanza delle parole chiave e della libreria nativa per la scrittura di programmi complessi.
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 40

Python: un'introduzione

Prof. Daniele Bini

libro di testo:
Conradi Molinari - Intelligenza artificiale - Zanichelli
da pag 36 a pag 54
Introduzione al linguaggio Python:
Python è un linguaggio di programmazione tra i più usati al
mondo.

È ormai un linguaggio leader per lo sviluppo di applicazioni


di machine learning, intelligenza artificiale, data science.
Inoltre è molto usato per sviluppare backend, web
application o programmi standalone. Negli ultimi anni si è
diffusa anche una versione di Python per microcontrollori,
MicroPython, che contiene un sottoinsieme della libreria
standard.
Python:
Interpretato

Di alto livello

Orientato agli oggetti

Potente e produttivo

Estensibile

Con una tipizzazione forte e dinamica

È open source (www.python.org)


Le 33 keyword di Python e la libreria nativa
Il linguaggio di Python ha solo 33 parole chiave native.
Queste parole sono sufficienti per scrivere qualunque
programma, anche quelli che risolvono problemi complessi.

Sono tutte in minuscolo escluso True, False e None


Le 33 keyword di Python e la libreria nativa
Le parole chiave sono come i mattoncini da costruzioni con
cui è possibile assemblare qualunque costruzione complessa.
Per progetti più grandi si usano i moduli.

I moduli sono librerie di comandi, funzioni, classi


impacchettate insieme per fornire un set di funzionalità
aggiuntive utilizzabili dal programmatore. Sono di due tipi:

● i moduli nativi, inclusi nella installazione di Python


che abbiamo sulla nostra macchina e che sono anche detti
buit-in;
● i moduli esterni, creati dal programmatore stesso, oppure
da terze parti.
Le 33 keyword di Python e la libreria nativa
Per progetti più grandi si usano i moduli: librerie di
comandi, funzioni, classi impacchettate insieme per fornire
un set di funzionalità aggiuntive utilizzabili dal
programmatore. Sono di due tipi:

● i moduli nativi, inclusi nella installazione di Python


che abbiamo sulla nostra macchina e che sono anche detti
buit-in;
● i moduli esterni, creati dal programmatore stesso, oppure
da terze parti.

I più usato sono moduli nativi come random, math e i moduli


esterni come numpy, pandas, scikit-learn e matplotlib.
Le variabili e i tipi:
Una variabile è uno spazio di memoria RAM contenente dati a
cui è stato attribuito un identificatore, che nel codice
sorgente corrisponde al nome della variabile. All’interno
del codice le variabili devono essere per prima cosa
inizializzate, cioè dobbiamo assegnargli dei valori
iniziali.

Ex: inizializziamo due variabili: temperatura e giorno.


Le variabili e i tipi:
Le variabili e i tipi:
Python è dotato di controllo dinamico dei tipi, per cui sarà
l’interprete a definire i tipi delle variabili utilizzate
nel programma, nel momento in cui a essa viene assegnato un
valore (l’assegnamento corrisponde all’operatore =).

Per verificare il controllo dinamico dei tipi usiamo la


funzione type() che ottiene il tipo di un oggetto. Ex:
garbage collection:
La garbage collection (in italiano, raccolta della
spazzatura) è una forma di gestione automatica della memoria
che tenta di ripulire quella ancora allocata dal programma,
ma non più referenziata (e quindi non utilizzata).
garbage collection:
Se invece scriviamo:

Il codice precedente lascia


l’intero 123 inaccessibile
poiché, nonostante sia ancora
presente in memoria, la
variabile x punta alla stringa
"Hello" e non più all’intero
originario! Sarà compito del
processo di garbage collection
eliminare gli oggetti orfani
dalla memoria.
Assegnazione multipla:
Assegnazione multipla: possiamo inizializzare più variabili
con un solo operatore di assegnamento.

Vediamo un esempio.
Assegnazione multipla:
La funzione print() e la formattazione delle stringhe:
Le stringhe in Python possono essere delimitate sia da " che
da ':

Nella seconda riga il carattere \ è utile per non scrivere


una linea di codice troppo lunga e non corrisponde a
spezzare la stringa su due righe.
La funzione print() e la formattazione delle stringhe:

Per stampare una stringa occorre utilizzare la funzione


print(). Il commento in grigio è utile, ma l’interprete lo
ignorerà. E’ identificato sintatticamente da un carattere #
all’inizio (sharp in lingua inglese).

Nella riga #5: che cosa significa stampare la funzione


print()? In Python tutto è un oggetto, anche le funzioni!
La funzione print() e la formattazione delle stringhe:
f-string:
Le f-string sono dette anche stringhe formattate e sono
definite anteponendo una f davanti all’apice singolo o
doppio che apre la stringa. Vediamo subito un esempio:

Alla riga #3 stampiamo la stringa formattata contenente b/a


tra parentesi graffe. L’operazione b/a è eseguita a run time
cioè il suo valore viene calcolato durante l’esecuzione.
f-string:
Il risultato di print() corrisponde alla stampa di:

La soluzione dell’equazione è 0.5!

Le parentesi graffe delimitano il codice in Python che è


calcolato e poi inserito nella stringa. Si poteva anche fare:

usando str() per convertire in stringa il risultato e


concatenando le diverse parti con +
f-string:
Sequenze di escape:
Esistono alcune sequenze di controllo utili per generare
caratteri speciali all’interno delle stringhe che vogliamo
stampare. Sono dette sequenze di escape.
Sequenze di escape:
Per esempio riscriviamo il codice precedente con una sola
print() e inseriamo una messa a capo tra le due stringhe
tramite il carattere di new line \n.
Operazioni con le stringhe:
● Sommare stringhe

● Moltiplicare stringhe
Indicizzazione e slicing:
Si dice che le stringhe sono indicizzate. L’indicizzazione ci
permette di estrarre un singolo carattere, ma se vogliamo
ottenere una sottostringa dobbiamo utilizzare lo slicing. Ex:
Indicizzazione e slicing:
Si possono utilizzare sia indici positivi sia negativi.

Nel primo caso l’indice parte da 0 per il primo carattere a


sinistra e incrementa di 1 a ogni carattere verso destra;

nel secondo caso l’indicizzazione parte dall’ultimo carattere


della stringa col valore −1 e procede a ritroso verso sinistra,
decrementando di 1 a ogni carattere.
Indicizzazione e slicing:
Ex:
Indicizzazione e slicing:
Non dimentichiamo che il primo carattere della stringa ha
indice zero. Si può decidere quale delle due indicizzazioni
usare, ma non possiamo mescolarle. Normalmente è pratico
utilizzare l’indicizzazione con indici positivi quando vogliamo
accedere alla parte iniziale di una stringa; con indici
negativi quando abbiamo necessità di accedere alla parte
terminale di una stringa.
Modificare una stringa:
Le stringhe di Python sono oggetti immutabili. Ex:

Il problema è risolvibile con una nuova stringa:


Lunghezza di una stringa:
Talvolta abbiamo bisogno di conoscere la lunghezza di una
stringa. La funzione che ci fornisce questa informazione è
len().
I contenitori:
Per gestire insiemi di stringhe, di numeri e più in generale
collezioni più complesse di dati, Python è dotato di strutture
per poterle gestire: i contenitori. Sono di tre tipi:

● tuple;
● liste;
● dizionari.

Ciascuno di essi è costituito da unità elementari, detti


elementi. In genere l’elemento potrà essere un intero, un
floating point, una stringa, un booleano oppure un oggetto.
Le tuple:
Le tuple sono collezioni immutabili di oggetti: non è possibile
modificare né la tupla, né i suoi elementi.

La tupla racchiude i suoi elementi tra parentesi tonde e ogni


elemento è separato dal successivo tramite una virgola. Ex:
Le tuple:
Alla riga #2 la variabile punto ha due elementi di tipo
floating point. Alla riga #6 invece giorni ha sette stringhe
dei nomi dei giorni della settimana.

In alternativa è possibile scomporre la tupla assegnando


ciascun elemento a una variabile. Ex:
Le liste:
Le liste sono il contenitore principale di Python e sono
contenitori mutabili: sia una lista sia i suoi elementi possono
essere modificati.

E’ costruita delimitando i suoi elementi da parentesi quadre e


ogni elemento è separato dal successivo tramite una virgola.
Come per stringhe e tuple sulle liste vige la stessa
indicizzazione. Inoltre si applica lo slicing esattamente come
per le stringhe.

Possiamo creare liste omogenee, ovvero con elementi tutti dello


stesso tipo, oppure liste eterogenee, che contengono elementi
di tipi diversi.
Le liste:
Siccome le liste sono mutabili, possiamo modificare
direttamente un elemento di una lista nel modo seguente:
Le liste:
Vediamo ora alcuni esempi di slicing delle liste:

Alla riga #2 si usa il metodo append().

Alla riga #7 si usa un metodo: remove() per rimuovere


l’elemento indicato tra le parentesi tonde.
I dizionari:
I dizionari contengono elementi, detti anche coppie
chiave-valore, ciascuno dei quali è costituito appunto da una
chiave e un valore.

Le entità che costituiscono un elemento sono due: i dizionari


sono indicizzati tramite le loro chiavi.

I valori degli elementi possono essere qualunque oggetto di


Python, mentre le chiavi possono essere solo oggetti con una
specifica proprietà: numeri e stringhe soddisfano tale
proprietà.
I dizionari:
I dizionari sono delimitati da parentesi graffe, ciascun
elemento è separato dagli altri mediante una virgola e la
chiave è separata dal valore con il carattere due punti.

Ex:
I dizionari:
Per esempio, se vogliamo la traduzione di "random" dovremo
scrivere inglese_italiano["random"] che ci tornerà "casuale".

Ex elementi di tipo diverso (e chiavi dello stesso tipo):


La funzione input() e le conversioni da stringa:
Per ricevere input da tastiera, si usa input():

La funzione input() alla riga #1 stampa la stringa "Dimmi il


tuo nome…" e poi attende che l’utente lo scriva e prema il
tasto Invio.

In questo esempio abbiamo digitato sulla tastiera Mario.


La funzione input() e le conversioni da stringa:

Si chiedono gli anni e l’altezza: il primo è un intero, il


secondo è un floating point. Dobbiamo poter convertire l’input
da stringhe a interi e da stringhe a floating point. Si usano
rispettivamente int() e float(), alle righe #1 e #2.

Si deve scrivere il separatore dei decimali secondo la


convenzione anglosassone (punto) e non con una virgola.

Potrebbero piacerti anche