SlideShare a Scribd company logo
1 of 75
Download to read offline
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Corso Python
Riccardo Bortoluzzi
Collegio Universitario don Nicola Mazza
17 Maggio 2018
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 1 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Struttura della lezione
1 Introduzione
2 Tipi Numerici
3 Variabili
4 Tipo Stringa
5 Tipi Contenitori
6 Esercizi
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 2 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Python
Python è un linguaggio di programmazione ad alto livello.
Fu creato nel 1991.
Esistono 2 versioni principali:
Python 2.7
Python 3
Per avviare Python, in generale, basta da riga di comando
digitare "python", altrimenti ricercarlo tra i programmi.
riccardo@riccardo-GV62-7RE:~$ python
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license"
for more information.
>>>
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 3 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Tipo int
int
Il tipo int serve per rappresentare i numeri interi (eventualmente
con il loro segno)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 4 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Tipo int
int
Il tipo int serve per rappresentare i numeri interi (eventualmente
con il loro segno)
>>> 5
5
>>> -6
-6
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 4 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Tipo oat
oat
Il tipo oat serve per rappresentare i numeri razionali
Il simbolo di separazione tra unità e decimali è il punto (.)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 5 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Tipo oat
oat
Il tipo oat serve per rappresentare i numeri razionali
Il simbolo di separazione tra unità e decimali è il punto (.)
 15.6
15.6
 -6.0
-6
 .3
0.3
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 5 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Tipo complex
complex
Il tipo complex serve per rappresentare i numeri complessi
L'unità immaginaria è indicata con j
Bisogna sempre indicare il coeciente della parte immaginaria
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 6 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Tipo complex
complex
Il tipo complex serve per rappresentare i numeri complessi
L'unità immaginaria è indicata con j
Bisogna sempre indicare il coeciente della parte immaginaria
 5-2.5j
(5-2.5j)
 5j
5j
 10+1j
(10+1j)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 6 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Operazioni
Le operazioni vengono eseguite per tipi e gli operandi vengono
convertiti al tipo più esterno tra quelli degli operandi
Operatori
+ Addizione
- Sottrazione
* Moltiplicazione
/ Divisione
% Modulo
** Elevamento a potenza
c.real Parte reale del numero
c.imag Parte immaginaria del numero
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 7 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Operazioni - Esempi
 5**2
25
 9%4
1
 (7-5j).real
7.0
 (7-5j).imag
-5.0
 7/2
3
 7/2.0
3.5
 5+2.12
7.12
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 8 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Conversione tra tipi
Per sapere il tipo di un oggetto si utilizza la funzione type()
 type(6.5)
type 'float'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 9 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Numerici
Conversione tra tipi
Per sapere il tipo di un oggetto si utilizza la funzione type()
 type(6.5)
type 'float'
Per convertire un tipo in un altro si utilizzano le funzioni che si
chiamano come il tipo di destinazione:
int(n) oat(n) complex(n)
 float(6)
6.0
 complex(8.2)
(8.2+0j)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 9 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Variabili
Variabili
Una variabile è un nome che si riferisce ad un dato.
Le variabili possono contenere sia lettere che numeri, ma
devono cominciare con una lettera.
Le variabili sono case sensitive.
Per assegnare un valore a una variabile si utilizza l'operatore =
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 10 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Variabili
Variabili
Una variabile è un nome che si riferisce ad un dato.
Le variabili possono contenere sia lettere che numeri, ma
devono cominciare con una lettera.
Le variabili sono case sensitive.
Per assegnare un valore a una variabile si utilizza l'operatore =
 x=9
 Ciao=6.2
 py007=5+9j
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 10 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Variabili
Operazioni con varibili
Per visualizzare il valore contenuto in una variabile si usa il
comando print() con o senza parentesi
 print Ciao
6.2
 print(Ciao)
6.2
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 11 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Variabili
Operazioni con varibili
Per visualizzare il valore contenuto in una variabile si usa il
comando print() con o senza parentesi
 print Ciao
6.2
 print(Ciao)
6.2
Per incrementare una variabile numerica di una unità si può
utilizzare l'operatore +=1
 x+=1
Che equivale a scrivere
 x=x+1
Analogamente si possono utilizzare gli altri operatori
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 11 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Tipo str
str
Il tipo str serve per rappresentare le stringhe di testo
Una stringa deve essere racchiusa tra singoli apici (' ') oppure
tra doppi apici ( )
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 12 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Tipo str
str
Il tipo str serve per rappresentare le stringhe di testo
Una stringa deve essere racchiusa tra singoli apici (' ') oppure
tra doppi apici ( )
 'ciao a tutti'
'ciao a tutti'
 questo corso e' bellissimo
questo corso e' bellissimo
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 12 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Concatenazione e ripetizione di stringhe
Per eseguire la concatenazione di stringhe si usa l'operatore +
 'chiudete la cassa' + 'forte con un lucchetto'
'chiudete la cassaforte con un lucchetto'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 13 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Concatenazione e ripetizione di stringhe
Per eseguire la concatenazione di stringhe si usa l'operatore +
 'chiudete la cassa' + 'forte con un lucchetto'
'chiudete la cassaforte con un lucchetto'
Per eseguire la ripetizione di stringhe si utilizza l'operatore *
 ah*5
'ahahahahah'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 13 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Stringa
Metodi per le stringhe
I metodi sono particolari funzioni e la loro sintassi è
stringa.metodo(parametri)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 14 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Stringa
Metodi per le stringhe
I metodi sono particolari funzioni e la loro sintassi è
stringa.metodo(parametri)
Per sapere il numero di occorrenze di una sottostringa si utilizza
il metodo .count(sottostringa)
 Python e' molto divertente.count('te')
2
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 14 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Stringa
Metodi per le stringhe
I metodi sono particolari funzioni e la loro sintassi è
stringa.metodo(parametri)
Per sapere il numero di occorrenze di una sottostringa si utilizza
il metodo .count(sottostringa)
 Python e' molto divertente.count('te')
2
Per trasformare una stringa in maiuscolo o minuscolo si
utilizzano i metodi .lower() e .upper()
 Aprite la Mente.upper()
'APRITE LA MENTE'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 14 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Stringa
Metodi per le stringhe
I metodi sono particolari funzioni e la loro sintassi è
stringa.metodo(parametri)
Per sapere il numero di occorrenze di una sottostringa si utilizza
il metodo .count(sottostringa)
 Python e' molto divertente.count('te')
2
Per trasformare una stringa in maiuscolo o minuscolo si
utilizzano i metodi .lower() e .upper()
 Aprite la Mente.upper()
'APRITE LA MENTE'
Per sostituire una sottostringa con un'altra si utilizza il metodo
.replace(vecchia, nuova)
 'quesio iopo roiola tanio'.replace('io', 'to')
'questo topo rotola tanto'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 14 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Conversioni
Per convertire un dato al formato stringa si utilizza la funzione
str(dato)
 str(8.5)
'8.5'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 15 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Conversioni
Per convertire un dato al formato stringa si utilizza la funzione
str(dato)
 str(8.5)
'8.5'
Per convertire un carattere in codice ASCII si utilizza la
funzione ord(carattere)
 ord('G')
71
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 15 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Conversioni
Per convertire un dato al formato stringa si utilizza la funzione
str(dato)
 str(8.5)
'8.5'
Per convertire un carattere in codice ASCII si utilizza la
funzione ord(carattere)
 ord('G')
71
Per convertire un numero del codice ASCII in carattere si
utilizza la funzione chr(n)
 chr(103)
'g'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 15 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Porzioni di stringa
Per accede ad un carattere di una stringa si utilizza la sintassi
stringa[indice]
Il primo carattere della stringa ha indice 0, l'ultimo la lunghezza
della stringa -1 (o semplicemente -1)
 s='Attenti agli indici'
 s[3]
'e'
 s[-1]
'i'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 16 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo Stringa
Porzioni di stringa
Per accede ad un carattere di una stringa si utilizza la sintassi
stringa[indice]
Il primo carattere della stringa ha indice 0, l'ultimo la lunghezza
della stringa -1 (o semplicemente -1)
 s='Attenti agli indici'
 s[3]
'e'
 s[-1]
'i'
Per ottenere una sottostringa si utilizza la sintassi
stringa[inizio:ne] dove inizio rappresenta l'indice del primo
carattere da considerare e ne il primo da escludere
 s[2:7]
'tenti'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 16 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Contenitori
Tipo list
list
Il tipo list serve per rappresentare le collezioni di oggetti o array
Le liste sono mutabili e indicizzabili
Si può creare una lista racchiudendo gli elementi tra parentesi
quadre ([ , ]) e separando gli elementi da virgole
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 17 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Contenitori
Tipo list
list
Il tipo list serve per rappresentare le collezioni di oggetti o array
Le liste sono mutabili e indicizzabili
Si può creare una lista racchiudendo gli elementi tra parentesi
quadre ([ , ]) e separando gli elementi da virgole
 [1,2,3,6,8]
[1, 2, 3, 6, 8]
 a='primo'
 [13, e', 'un numero', a]
[13, e', 'un numero', 'primo']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 17 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Indicizzazione, Striding e Slicing
L'indicizzazione serve per accedere agli elementi di una lista
La sintassi è lista[indice] racchiudendo l'indice tra parentesi
quadre (il primo elemento ha sempre indice 0)
L=['da', 'stasera', 'divertiamoci', 'con', 'python']
 L[2]
'divertiamoci'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 18 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Indicizzazione, Striding e Slicing
L'indicizzazione serve per accedere agli elementi di una lista
La sintassi è lista[indice] racchiudendo l'indice tra parentesi
quadre (il primo elemento ha sempre indice 0)
L=['da', 'stasera', 'divertiamoci', 'con', 'python']
 L[2]
'divertiamoci'
Lo striding serve per scorrere gli elementi di una lista
La sintassi è lista[inizio:ne:passo] dove inizio indica il primo
indice da considerare, ne il primo da escludere e passo
(può essere omesso, ma in questo caso si parla di slicing) di
quanto saltare da un indice al successivo
L[1:3]
['stasera', 'divertiamoci']
 L[:-1:2]
['da', 'divertiamoci']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 18 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Mutabilità
Le liste sono mutabili
 L=['I', 'delfini', 'non', 'sono', 'intelligenti']
 L[2]=certamente
 print L
['I', 'delfini', 'certamente', 'sono', 'intelligenti']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 19 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Copia
A causa della mutabilità, per copiare una lista, non si usa
l'operatore di assegnamento, ma lo Slicing
 g=L
 L[1]=topi
 print g
['I', 'topi', 'certamente', 'sono', 'intelligenti']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 20 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Copia
A causa della mutabilità, per copiare una lista, non si usa
l'operatore di assegnamento, ma lo Slicing
 g=L
 L[1]=topi
 print g
['I', 'topi', 'certamente', 'sono', 'intelligenti']
 c=L[:]
 print c
['I', 'topi', 'certamente', 'sono', 'intelligenti']
 L[4]=brutti
 print L
['I', 'topi', 'certamente', 'sono', 'brutti']
 print c
['I', 'topi', 'certamente', 'sono', 'intelligenti']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 20 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Funzioni
Per aggiungere un elemento in fondo a una lista si utilizza il
metodo lista.append(elemento), mentre per estendere una lista
con un'altra si utilizza il metodo lista.extend(concatenare)
M=[La, Matematica]
 M.extend([non,e'])
 print M
['La', 'Matematica', 'non', e']
 M.append(affascinante)
 print M
['La', 'Matematica', 'non', e', 'affascinante']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 21 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Funzioni
Per aggiungere un elemento in fondo a una lista si utilizza il
metodo lista.append(elemento), mentre per estendere una lista
con un'altra si utilizza il metodo lista.extend(concatenare)
M=[La, Matematica]
 M.extend([non,e'])
 print M
['La', 'Matematica', 'non', e']
 M.append(affascinante)
 print M
['La', 'Matematica', 'non', e', 'affascinante']
Per cancellare un elemento da una lista si utilizza la funzione
del lista[indice]
 del M[2]
 print M
['La', 'Matematica', e', 'affascinante']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 21 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Descrittori di lista
I descrittori di lista si utilizzano per creare delle liste, partendo
da altri contenitori.
La sintassi è [f(i) for i in contenitore] dove f può essere una
funzione qualsiasi.
 [2*i for i in [ciao, ecco, bene]]
['ciaociao', 'eccoecco', 'benebene']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 22 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo list
Descrittori di lista
I descrittori di lista si utilizzano per creare delle liste, partendo
da altri contenitori.
La sintassi è [f(i) for i in contenitore] dove f può essere una
funzione qualsiasi.
 [2*i for i in [ciao, ecco, bene]]
['ciaociao', 'eccoecco', 'benebene']
Si può richiedere che gli elementi di un descrittore soddisno a
varie condizioni, utilizzando la sintassi
[f(i) for i in contenitore if condizione]
 [2**i for i in range(6) if (i+3)4]
[4, 8, 16, 32]
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 22 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Contenitori
Tipo tuple
tuple
Il tipo tuple serve per rappresentare collezioni di oggetti
Al contrario delle liste, le tuple sono immutabili
Per creare una tupla si racchiudono gli elementi tra parentesi
tonde, separati da una virgola (( , ))
Per creare una tupla con un solo elemento è necessario mettere
la virgola dopo lo stesso
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 23 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Contenitori
Tipo tuple
tuple
Il tipo tuple serve per rappresentare collezioni di oggetti
Al contrario delle liste, le tuple sono immutabili
Per creare una tupla si racchiudono gli elementi tra parentesi
tonde, separati da una virgola (( , ))
Per creare una tupla con un solo elemento è necessario mettere
la virgola dopo lo stesso
 (tupla, numero, 1)
('tupla', 'numero', 1)
 (5,)
(5,)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 23 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo tuple
Indicizzazione e Slicing
Come per le liste, anche con le tuple si può accedere agli
elementi tramite indicizzazione e si possono applicare le funzioni
di slicing e striding
t=(dove, 2, uni formano, 3)
 t[2]
'uni formano'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 24 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo tuple
Indicizzazione e Slicing
Come per le liste, anche con le tuple si può accedere agli
elementi tramite indicizzazione e si possono applicare le funzioni
di slicing e striding
t=(dove, 2, uni formano, 3)
 t[2]
'uni formano'
Però le tuple non sono modicabili
 t[0]=23
Traceback (most recent call last):
File stdin, line 1, in module
TypeError: 'tuple' object does not support item assignment
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 24 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Contenitori
Tipo dict
dict
Il tipo dict indica i dizionari e serve per rappresentare delle
coppie chiave-valore
Per creare un dizionario si inseriscono le coppie tra parentesi
grae seguendo la sintassi {chiave1:valore1, chiave2:valore2}
Le chiavi devono essere immutabili (numeri, stringhe, tuple), i
valori possono essere anche mutabili
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 25 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Contenitori
Tipo dict
dict
Il tipo dict indica i dizionari e serve per rappresentare delle
coppie chiave-valore
Per creare un dizionario si inseriscono le coppie tra parentesi
grae seguendo la sintassi {chiave1:valore1, chiave2:valore2}
Le chiavi devono essere immutabili (numeri, stringhe, tuple), i
valori possono essere anche mutabili
 d={2:[ciao, [] ], ch:5, (4, 3):ok}
 print d
{2: ['ciao', []], 'ch': 5, (4, 3): 'ok'}
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 25 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo dict
Accesso, Aggiunta, Modica
Per aggiungere una chiave (e il rispettivo valore) al dizionario si
scrive dizionario[chiave]=valore
 d[nuovo]=3
 print d
{2: ['ciao', []], 'ch': 5, 'nuovo': 3, (4, 3): 'ok'}
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 26 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo dict
Accesso, Aggiunta, Modica
Per aggiungere una chiave (e il rispettivo valore) al dizionario si
scrive dizionario[chiave]=valore
 d[nuovo]=3
 print d
{2: ['ciao', []], 'ch': 5, 'nuovo': 3, (4, 3): 'ok'}
Per accedere al valore di una chiave si utilizza la sintassi
dizionario[chiave]
 d[(4, 3)]
'ok'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 26 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo dict
Accesso, Aggiunta, Modica
Per aggiungere una chiave (e il rispettivo valore) al dizionario si
scrive dizionario[chiave]=valore
 d[nuovo]=3
 print d
{2: ['ciao', []], 'ch': 5, 'nuovo': 3, (4, 3): 'ok'}
Per accedere al valore di una chiave si utilizza la sintassi
dizionario[chiave]
 d[(4, 3)]
'ok'
Si possono anche modicare i valori associati alle chiavi
 d[ch]=10
 print d
{2: ['ciao', []], 'ch': 10, 'nuovo': 3, (4, 3): 'ok'}
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 26 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo dict
Funzioni
Per avere la lista di tutte le chiavi si ricorre al metodo
dizionario.keys() Per visualizzare la lista dei valori si utilizza il
metodo dizionario.values()
 d.values()
[['ciao', []], 'stringa', 3, 'ok']
 d.keys()
[2, 'ch', 'nuovo', (4, 3)]
 d.values()
[['ciao', []], 'stringa', 3, 'ok']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 27 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo dict
Funzioni
Per avere la lista di tutte le chiavi si ricorre al metodo
dizionario.keys() Per visualizzare la lista dei valori si utilizza il
metodo dizionario.values()
 d.values()
[['ciao', []], 'stringa', 3, 'ok']
 d.keys()
[2, 'ch', 'nuovo', (4, 3)]
 d.values()
[['ciao', []], 'stringa', 3, 'ok']
Per eliminare un elemento da un dizionario si richiama alla
funzione del dizionario[chiave]
 del d[2]
 print d
{'ch': 'stringa', 'nuovo': 3, (4, 3): 'ok'}
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 27 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Contenitori
Tipo set
set
Il tipo set è usato per indicare gli insiemi di valori
Per creare un insieme si utilizza il comando set(lista) dove
lista è un elemento di tipo contenitore.
Gli insiemi non contengono elementi doppi (se ci sono doppioni
in lista ne viene preso soltanto uno) e non sono indicizzabili
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 28 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipi Contenitori
Tipo set
set
Il tipo set è usato per indicare gli insiemi di valori
Per creare un insieme si utilizza il comando set(lista) dove
lista è un elemento di tipo contenitore.
Gli insiemi non contengono elementi doppi (se ci sono doppioni
in lista ne viene preso soltanto uno) e non sono indicizzabili
 s=set( [ 2, 3, 6, programma, 2 ] )
 print s
set([2, 3, 'programma', 6])
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 28 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo set
Funzioni
Per conoscere la lunghezza di un insieme si utilizza il comando
len(insieme)
 len(s)
4
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 29 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Tipo set
Funzioni
Per conoscere la lunghezza di un insieme si utilizza il comando
len(insieme)
 len(s)
4
L'operatore di unione tra insiemi è insieme | insieme
L'operatore di intersezione è insieme  insieme
L'operatore di dierenza è insieme - insieme
L'operatore di dierenza simmetrica è insieme^insieme
 t=set( (3, 6, 9) )
 t|s
set([2, 3, 6, 9, 'programma'])
 ts
set([3, 6])
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 29 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipi Numerici
Quale sarà l'output di:
 7%5
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 30 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipi Numerici
Quale sarà l'output di:
 7%5
2
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 30 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipi Numerici
Quale sarà l'output di:
 7%5
2
 float(11/3)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 30 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipi Numerici
Quale sarà l'output di:
 7%5
2
 float(11/3)
3.0
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 30 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipi Numerici
Quale sarà l'output di:
 7%5
2
 float(11/3)
3.0
 type(5.2-3)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 30 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipi Numerici
Quale sarà l'output di:
 7%5
2
 float(11/3)
3.0
 type(5.2-3)
type 'float'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 30 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipi Numerici
L'espressione
2 ∗ 2 +
3
2
− 3
2
%3 = 2 ∗
4 + 3
2
− 3
2
%3 =
= {[7 − 3]2
}%3 = {[4]2
}%3 = 16%3 = 1
Però perché allora
 ( (2 * ( 2 + 3/2 ) -3 )**2) % 3
0
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 31 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipi Numerici
L'espressione
2 ∗ 2 +
3
2
− 3
2
%3 = 2 ∗
4 + 3
2
− 3
2
%3 =
= {[7 − 3]2
}%3 = {[4]2
}%3 = 16%3 = 1
Però perché allora
 ( (2 * ( 2 + 3/2 ) -3 )**2) % 3
0
Perché la divisione viene fatta tra interi e quindi 3/2=1,
dobbiamo trasformare uno dei due in oat
 ( (2 * ( 2 + 3/2.0 ) -3 )**2) % 3
1.0
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 31 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipo str
Attraverso le stringhe
s1='cchi'
s2='ri'
creare la parola cchicchiricchi
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 32 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipo str
Attraverso le stringhe
s1='cchi'
s2='ri'
creare la parola cchicchiricchi
 s1*2 + s2 + s1
'cchicchiricchi'
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 32 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipo list e str
Utilizzando la codica ASCII decifrare la seguente lista:
L=[67, 79, 77, 80, 76, 73, 77, 69, 78, 84, 73, 33]
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 33 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipo list e str
Utilizzando la codica ASCII decifrare la seguente lista:
L=[67, 79, 77, 80, 76, 73, 77, 69, 78, 84, 73, 33]
 [chr(i) for i in L]
['C','O','M','P','L','I','M','E','N','T','I','!']
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 33 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipo list
Trovare 3 modi dierenti per ottenere la lista dei multipli di 6
da 0 a 61 (suggerimento: utilizzare la funzione
range(numero_nale) che crea la lista dei numeri interi positivi
o nulli e  numero_nale)
 range(5)
[0, 1, 2, 3, 4]
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 34 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipo list
Trovare 3 modi dierenti per ottenere la lista dei multipli di 6
da 0 a 61 (suggerimento: utilizzare la funzione
range(numero_nale) che crea la lista dei numeri interi positivi
o nulli e  numero_nale)
 range(5)
[0, 1, 2, 3, 4]
range(62)[0:62:6]
[6*i for i in range(61/6+1)]
[i for i in range(62) if i%6==0]
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 34 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
tipo set
Contare quanti sono gli elementi diversi nella tupla:
k=(1,4,3,5,3,6,1,4,3,5,1,6,3,6,5,7,3,7,5,8,3,5,1,6,1)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 35 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
tipo set
Contare quanti sono gli elementi diversi nella tupla:
k=(1,4,3,5,3,6,1,4,3,5,1,6,3,6,5,7,3,7,5,8,3,5,1,6,1)
 len(set(k))
7
Quali sono i numeri che mancano?
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 35 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
tipo set
Contare quanti sono gli elementi diversi nella tupla:
k=(1,4,3,5,3,6,1,4,3,5,1,6,3,6,5,7,3,7,5,8,3,5,1,6,1)
 len(set(k))
7
Quali sono i numeri che mancano?
 tutti=set(range(10))
 tutti - set(k)
set([0, 9, 2])
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 35 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipo dict e str
Data la lista
l=[ciao, casa, cane, prima]
Utilizzando i descrittori di lista, creare un dizionario con chiavi
le lettere a,e,o e come valori la lista di parole che
terminano con quella lettera (per confrontare se due stringhe
sono uguali si utilizza l'operatore ==)
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 36 / 36
Corso
Python
Riccardo
Introduzione
Tipi
Numerici
Variabili
Tipo Stringa
Tipi
Contenitori
Esercizi
Esercizi
Tipo dict e str
Data la lista
l=[ciao, casa, cane, prima]
Utilizzando i descrittori di lista, creare un dizionario con chiavi
le lettere a,e,o e come valori la lista di parole che
terminano con quella lettera (per confrontare se due stringhe
sono uguali si utilizza l'operatore ==)
 d={}
 d[a]=[i for i in l if i[-1] == a ]
 d[e]=[i for i in l if i[-1] == e ]
 d[o]=[i for i in l if i[-1] == o ]
 print d
{'a': ['casa', 'prima'], 'e': ['cane'], 'o': ['ciao']}
Riccardo (Collegio don Mazza) Corso Python 17 Maggio 2018 36 / 36

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Lezione 1 Corso Python