Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci...
Transcript of Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci...
![Page 1: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/1.jpg)
![Page 2: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/2.jpg)
Trendiest programming languages of 2019
https://learnworthy.net/trendiest-programming-languages-of-2019/
![Page 3: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/3.jpg)
Python
• Python è un linguaggio di programmazione dinamico orientato agli oggetti utilizzabile per molti tipi di software
• È fornito di una buona libreria standard ed è facilmente estendibile
• Python è distribuito con licenza Open-Source– È multipiattaforma
• www.python.it• www.python.org
![Page 4: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/4.jpg)
Python 2 o 3
• Per un’introduzione preliminare, non ci sono differenze significative
• Forse la principale è print che diventa una funzione – e non è più un’istruzione
We have decided that January 1, 2020, was the day that we sunset Python 2. That means that we will
not improve it anymore after that day, even if someone finds a security problem in it. You should
upgrade to Python 3 as soon as you canpython.org
![Page 5: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/5.jpg)
Funzioni e metodi
• v.f() è un metodo• I metodi possono inizialmente essere considerati
come delle funzioni applicate (anche) sulla variabile prima del punto
• Il codice Python– "CIAO".lower()
• è equivalente al seguente codice C– lower(”CIAO");
![Page 6: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/6.jpg)
Interprete interattivo
• Python offre un interprete pronto a riceverecomandi
• Possiamo inserire qualsiasi costrutto del linguaggio e vedere immediatamente l’output
Python 3.7.4 (default, Sep 7 2019, 18:27:02)[Clang 10.0.1 (clang-1001.0.46.4)] on darwinType "help" …>>> 3+58>>> print("Ciao")Ciao>>> print('Ciao')Ciao>>>
![Page 7: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/7.jpg)
Comandi
• I comandi si possono inserire direttamente dallo standard input
• I file sorgente Python sono file di testo, generalmente con estensione .py
• Un programma Python si esegue con il comando– python file.py
![Page 8: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/8.jpg)
Comandi
• # inizia un commento che si estende fino a fine riga
• Le istruzioni sono separate da fine riga e non da ;• Per far continuare un’istruzione anche sulla linea
successiva è necessario inserire un \ a fine riga– Se le parentesi non sono state chiuse correttamente
Python capisce che l’istruzione si estende anche sulla riga successiva
![Page 9: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/9.jpg)
Input e Output
• Print stampa il suo argomento come una stringa• Più argomenti separati da un virgola sono
stampati separati da uno spazio
>>> print(5)5>>> print("Ciao")Ciao>>> print('Ciao')Ciao>>> print('Ciao', "classe")Ciao classe>>>
![Page 10: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/10.jpg)
Input e Output
• Si può formattare l’output come in c• Per leggere un dato si usa input()
– La funzione restituisce sempre una stringa– int(), float() consentono di convertire facilmente il
valore ottenuto
>>> x=18>>> y=15>>> print("x= %d y= %d" % (x,y))x= 18 y= 15>>> print("x=", x, "y=", y)x= 18 y= 15>>> v=input("inserisci un numero: ")inserisci un numero: 45>>> n=int(v)>>> print(n)45>>>
![Page 11: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/11.jpg)
Numeri
• Stessi operatori del C– Le parentesi possono essere usate per raggruppare:
• Esiste anche l’operatore elevamento a potenza **• Non esistono ++ e —• 3/2 è 1.5• 3.0//2 è la divisione intera (1)
![Page 12: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/12.jpg)
Variabili
• I loro nomi sono come in C• Non devono essere dichiarate
– Tipizzazione dinamica
• Non possono essere utilizzate prima che vengaloro assegnato un valore
• Possono riferirsi ad elementi di qualsiasi tipo
>>> x=5>>> nome='Marco'>>> print(x,nome)5 Marco>>> x, nome = "Marco",5>>> print(x,nome)Marco 5>>>
![Page 13: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/13.jpg)
Gerarchia concettuale
• I programmi sono da moduli• I moduli sono composti da istruzioni• Le istruzioni contengono espressioni• Le espressioni creano e gestiscono oggetti
• Qualsiasi cosa è un oggetto in Python
![Page 14: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/14.jpg)
Creazione
• L’oggetto contiene due meta-dati– Un identificatore di tipo– Un contatore per il numero di riferimenti
![Page 15: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/15.jpg)
C
int v = 0;
v 0
![Page 16: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/16.jpg)
C e Python
int v = 0; v = 0;
v 0 0v
![Page 17: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/17.jpg)
I tipi dipendono dagli oggetti
• Cosa succede?• I nomi delle variabili non hanno tipo
– Sono dei riferimenti
• Gli oggetti senza riferimenti sono cancellati (garbage collection)– Si usa il contatore di riferimenti
>>> a = 3>>> a = ‘cremona’>>> a = 1.23
![Page 18: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/18.jpg)
Riferimenti condivisi
![Page 19: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/19.jpg)
Stringhe
• Sono racchiuse fra apici singoli o doppi• Le stringhe sono immutabili
• Stessi caratteri speciali del c (ad esempio, \n)• Si possono usare alcuni operatori visti per i numeri
– + concatenazione– * ripetizione
>>> 'Python''Python'>>> print("Ciao\nmondo")Ciaomondo>>> 'ciao'+" mondo"'ciao mondo'>>> 'ciao'*3'ciaociaociao'
![Page 20: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/20.jpg)
Sottostringhe
>>> 'ciao'[1]'i'>>> 'ciao'[1:3]'ia'>>> 'ciao'[2:]'ao'>>> 'ciao'[:3]'cia'>>> 'ciao'[-1]'o'>>> 'ciao'[:-2]'ci'>>> 'ciao'[-1:1]''>>> 'ciao'[2]='x’<error>
![Page 21: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/21.jpg)
Slicing
>>> S = ‘abcdefghijklmnop’>>> S[1:10:2]‘bdfhj’>>> S[::2]‘acegikmo’
>>> S = ‘hello’>>> S[::-1]>>> ‘olleh’
![Page 22: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/22.jpg)
Alcuni metodi per stringhe
• split()• join()• lower()/upper()• find()• replace()• strip()/lstrip()/rstrip()• isalpha()/isdecimal()/isdigit()• islower()
![Page 23: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/23.jpg)
Metodi specifici>>> S = ‘Spam’>>> S.find(‘pa’)1>>> S‘Spam’>>> S.replace(‘pa’, ‘XYZ’)‘SXYZm’>>> S‘Spam’
>>> line = ‘aaa,bbb,ccccc,dd’>>> line.split(‘,’)[‘aaa’, ‘bbb’, ‘ccccc’, ‘dd’]>>> S = ‘spam’>>> S.upper() #we also have lower()‘SPAM’>>> S.isalpha()True
![Page 24: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/24.jpg)
Liste
• Contengono elementi anche eterogenei• Stessi operatori delle stringhe ma sono mutabili
>>> [1,2,'ciao'][1, 2, 'ciao']>>> [1]+[3,6][1, 3, 6]>>> [1,0]*3[1, 0, 1, 0, 1, 0]>>> [2,3,7,8][1:3][3, 7]>>> [2,3,7,8][:2][2, 3]>>> [1,2,3][0] =5>>>
![Page 25: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/25.jpg)
Liste
• append()/extend()– + crea una nuova lista– append modifica la lista esistente
• insert()• pop()/remove()• reverse()• sort() >>> l = [1,2,3]
>>> l[1, 2, 3]>>> l+[5][1, 2, 3, 5]>>> l[1, 2, 3]>>> l.append(5)>>> l[1, 2, 3, 5]>>>
![Page 26: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/26.jpg)
Slicing
Sostituzione/inserimento
Inserimento senza sostituire nulla
Cancellazione senza inserire nulla
Inserimento all’inizio
Inserimento alla fine
Inserimento alla fine
>>> L = [1]>>> L[:0] = [2,3,4]>>> L[2,3,4,1]
>>> L[len(L):] = [5,6,7]>>> L[2,3,4,1,5,6,7]
>>> L.extend([8,9,10])>>> L[2,3,4,1,5,6,7,8,9,10]
>>> L = [1,2,3]>>> L[1:2] = [4,5]>>> L[1,4,5,3]
>>> L[1:1] = [6,7]>>> L[1,6,7,4,5,3]
>>> L[1:2] = []>>> L[1,7,4,5,3]
![Page 27: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/27.jpg)
Comprehension
• [expression for var in list]
>>> l1 = [1,2,3,4,5]>>> l2 = [x%2 for x in l1]>>> l2[1, 0, 1, 0, 1]>>> l1[1, 2, 3, 4, 5]>>> l2 = []>>> for x in l1: l2.append(x//2)...>>> l2[0, 1, 1, 2, 2]>>>
![Page 28: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/28.jpg)
Forma estesa
>>> [x+y for x in ‘abc’ for y in ‘lmn’][‘al’, ‘am’, ‘an’, ‘bl’, ‘bm’, ‘bn’, ‘cl’, ‘cm’, ‘cn’]
>>> res = []>>> for x in ‘abc’:
for y in ‘lmn’:res.append(x+y)
>>> res[‘al’, ‘am’, ‘an’, ‘bl’, ‘bm’, ‘bn’, ‘cl’, ‘cm’, ‘cn’]
![Page 29: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/29.jpg)
Tuple
• Delimitate da parentesi, gli elementi sono separatida virgole
• Simili alle liste ma immutabili• Le parentesi possono essere omesse
>>> (1,2,3)(1, 2, 3)>>> (1,)(1,)>>> ()()>>> (1,2)[0] = 5<error>>>> v = (5,2,3)>>> v(5, 2, 3)>>> v = 5,2,3>>> v(5, 2, 3)
![Page 30: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/30.jpg)
Dizionari
• Associano un valore ad una chiave• Creati nella forma {ch1: val1, ch2: val2}• L’accesso e l’inserimento di elementi può usare
solo le chiavi• Le chiavi devono essere immutabili• Le coppie non sono ordinate
>>> {'a':1, 'b':2}['a']1>>> {'a':1, 'b':2}['x’]<error>>>> d = {}>>> d['c'] = 2>>> d{'c': 2}>>>
![Page 31: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/31.jpg)
Creazione
>>> D = {}>>> D[‘name’] = ‘Bob’>>> D[‘job’] = ‘developer’>>> D[‘age’] = 40>>> D{‘age’:40, ‘name’:’Bob’, ‘job’:’Developer’}>>> print(D[‘name’])Bob
>>> d1 = dict(name=‘Bob’, job=‘developer’, age=40)>>> d1{‘age’:40, ‘name’:’Bob’, ‘job’:’Developer’}
![Page 32: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/32.jpg)
Cambiamento
>>> D{‘eggs’:3, ‘spam’:2, ‘ham’:1}
>>> D[‘ham’] = [‘grill’, ‘bake’, ‘fry’]>>> D{‘eggs’:3, ‘spam’:2, ‘ham’:[‘grill’, ‘bake’, ‘fry’]}
>>> del D[‘eggs’]>>> D{‘spam’:2, ‘ham’:[‘grill’, ‘bake’, ‘fry’]}
>>> D[‘brunch’] = ‘Bacon’>>> D{‘brunch’:‘Bacon’, ’spam’:2, ‘ham’:[‘grill’, ‘bake’, ‘fry’]}
![Page 33: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/33.jpg)
Chiavi non stringa
>>> L = []>>> L[99] = ‘spam’error! index out of range!
>>> D = {}>>> D[99] = ‘spam’>>> D[99]‘spam’>>> D{99:’spam’}
![Page 34: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/34.jpg)
Metodi principali
• clear()• copy()• has_key()• items()/keys()/values()• update()• get()
![Page 35: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/35.jpg)
Contare con un dizionario
colors = [‘red’, ‘green’, ‘red’, ‘blue’, ‘green’, ‘red’]d = {}for color in colors:
if color not in d:d[color] = 0
d[color] += 1
d = {}for color in colors:
d[color] = d.get(color, 0) + 1
![Page 36: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/36.jpg)
Comprehension
• È un modo per creare dizionari– {key_expression : value_expression for var in list}– Ci vogliono due espressioni
l = ['a', 'b', 'c', 'd']d = {}n = 1for i in l:
d[i] = nn = n + 1
print(d)
l = ['a', 'b', 'c', 'd']d = {letter: i+1 for i,letter in enumerate(l)}print(d)
![Page 37: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/37.jpg)
None
• None è una variabile molto importante con lo stesso ruolo di NULL in C
• In Python None è di un tipo non numerico
items = {"cat": 1, "dog": 2, "piranha": 3}# Get an element that does not existv = items.get("giraffe")# Test for itif v == None: print("Not found")
![Page 38: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/38.jpg)
Set
• Collezioni non-ordinata di oggetti unici
>>> X = set(‘spam’)>>> Y = {‘h’, ’a’, ‘m’}
>>> X, Y({‘m’, ‘a’, ‘p’, ’s’}, {‘m’, ‘a’, ‘h’})>>> X & Y{‘m’,’a’}>>> X | Y{‘m’, ‘h’, ’a’, ‘p’, ’s’}>>> X-Y{‘p’, ’s’}>>> X > YFalse
Eliminazione duplicati>>> list(set([1,2,1,3,1]))[1,2,3]
Identificazione differenze>>>set(‘spam’) – set(‘ham’){‘p’, ‘s’}
Uguaglianza>>> set(‘spam’) == set (‘asmp’)True
![Page 39: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/39.jpg)
Iniziamo a programmare
![Page 40: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/40.jpg)
Due differenze sostanziali
• Le istruzioni non terminano con ;• Non si usano parentesi graffe per organizzare il
codice– L’esecuzione del codice dipende da come è scritto– L’indentazione del codice diventa un elemento
fondamentale
![Page 41: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/41.jpg)
Assegnamento
• = += -= *= /= //= %= **=• Non è creata una copia dell’oggetto
– Solamente un nuovo riferimento
>>> x = [0,1,2]>>> y = x>>> x.append(3)>>> print(y)[0, 1, 2, 3]>>>
![Page 42: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/42.jpg)
Cosa succede
x 0 1 2
x
0 1 2
y
x
0 1 2
y
3
![Page 43: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/43.jpg)
Assegnamento
x 5
x
5
y
x
5y
6Nuovo intero
Vecchio riferimentocancellato
>>> x = 5>>> y = x>>> x = x+1>>> print(x)6>>> print(y)5>>>
![Page 44: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/44.jpg)
Vero e falso
• In Python esistono le variabili di tipo booleano– True e False
• Ogni singolo tipo può definire quando il suovalore è falso– Il numero “0” o “0.0”– Una stringa vuota (“”)
• Gli altri valori sono considerati veri
![Page 45: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/45.jpg)
Assegnamenti in sequenza
>>> string = ‘SPAM’>>> a,b,c = stringerror!!!
>>> a,b,c = string[0], string[1], string[2:]>>> a,b,c(’S’, ‘P’, ‘AM’)
>>> a,b = string[:2]>>> c = string[2:]>>> a,b,c(’S’, ‘P’, ‘AM’)
>>> a,b,c(’S’, ‘P’, ‘AM’)>>> (a,b),c = string[:2], string [2:]
![Page 46: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/46.jpg)
Assegnamenti multipli
>>> a = b = c =‘spam’>>> a,b,c(‘spam’, ‘spam’, ‘spam’)
Riferimenti condivisi !!!
>>> a = b = 0>>> b = b + 1>>> a,b(0,1)
![Page 47: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/47.jpg)
Confronto
• == != > < >= <=• Se necessario vengono eseguite le necessarie
conversioni– 1 == 1.0 è vero
• and or e not• La valutazione di and e or è corto-circuitata
![Page 48: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/48.jpg)
Funzioni built-in
• range([start,] stop[, step])– step è l’incremento, il valore di default è 1– Il valore di default di start è 0– Molto usato con i cicli (vedremo)
• len(s) ritorna il numero di elementi in s
>>> len('ciao')4>>> len('x\0a')3>>> len([1,2,3])3>>> len({'a':1, 'b':5})2>>>
![Page 49: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/49.jpg)
Ancora
• in: vero se il primo operando è contenuto nelsecondo
• is: vero se il primo operando è il secondo– Non solo è uguale!– Riferimento agli stessi oggetti
>>> 'a' in 'ciao'True>>> 2 in [1,2,3]True>>> 5 in [1,2,3]False>>> 'a' in {'x':1, 'a': 2}True>>>
![Page 50: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/50.jpg)
If
if condizione:...
elif condizioneAlternativa:...
else:...
• Sia la parte elif sia la parte else sono facoltative• Può esserci un numero qualsiasi di elif• Non sono necessarie le parentesi intorno
all’espresisone booleana• Non sono possibili assegnamenti all’interno della
condizione
![Page 51: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/51.jpg)
Esempio
• Chiedi un numero e stampa se è pari o dispari
number = int(input("Dammi un numero: "))if number % 2 == 0:
print(number,"e' pari”)elif number % 2 == 1:
print(number,"e' dispari")else:
print(number,"e' molto strano")
![Page 52: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/52.jpg)
Indentazione
• I raggruppamenti sono definiti dall’indentazione– Non si usano parentesi graffe, coppie “begin”/“end” e
simili– Obbliga a scrivere codice ordinato– Più naturale?
![Page 53: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/53.jpg)
while
while condizione:...
• break per uscire dal ciclo• continue per passare all’iterazione successive• pass per non fare nulla
![Page 54: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/54.jpg)
Esempi
x = 10while x:
x = x-1if x%2 != 0: continueprint(x)
while True:v = input("Inserisci un numero: ")if int(v) == 0: breakprint("il numero e': ", v)
![Page 55: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/55.jpg)
Stampa maggiore n numeri letti
n = int(input('Inserisci un numero: '))max = None
while n != 0:if not max or n > max: max = nn = int(input('Inserisci un numero: '))
print(max)
![Page 56: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/56.jpg)
for
for variabile in iteratore:...
• iteratore può essere una sequenza, lista, tupla, stringa, dizionario
• Si possono usare continue e break come per il while
![Page 57: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/57.jpg)
Esempi
onetoten = range(1, 11)for count in onetoten:
print(count)
lista = [4, 5, 7, 8, 9, 1, 0, 7, 10]lista.sort()prec = lista[0]del lista[0]for item in lista:
if prec == item:print("Trovato duplicato di", prec)
prec = item
![Page 58: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/58.jpg)
Esempi
lettere = {}for c in "Mississippi":
lettere[c] = lettere.get(c, 0) + 1lettere = lettere.items()lettere = sorted(lettere)print(lettere)
colors = ['red', 'green', 'red', 'blue', 'green', 'red']d = {}for color in colors:
if color not in d:d[color] = 0
d[color] += 1print(d)
![Page 59: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/59.jpg)
Import
• Per importare il modulo delle funzionimatematiche– import math
• Per usarlo– math.sqrt(2), math.log(5), ecc.
![Page 60: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/60.jpg)
Altre opzioni
#O1.pyfrom M import funcfrom N import func
func() # We have a problem!
#02.pyimport Mimport N # This is one possible solutionM.func()N.func()
#03.pyfrom M import func as mfunc # This is another solutionfrom N import func as nfuncmfunc()nfunc()
![Page 61: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/61.jpg)
Nuove funzioni
def funzione(arg1, arg2, opz1=val1):...• Non bisogna specificare il tipo ritornato
– Una funzione può ritornare un oggetto di qualsiasi tipo
• Gli argomenti sono normali variabili e possonoessere in qualsiasi numero– Se la funzione non accetta argomenti si usa ()
![Page 62: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/62.jpg)
Un primo esempio
>>> def times(x,y):return x * y
>>> times(2,4)8
>>> x = times(3.14, 4)>>> x12.56
>>> times(‘ABC’, 3)‘ABCABCABC’
![Page 63: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/63.jpg)
Nuove funzioni
• Gli argomenti opzionali possono non esserespecificati dal chiamante, in questo casoassumono il valore di default
• Le variabili all’interno della funzione non sonovisibili dall’esterno
def foo(x, y, z=42, k=12):print(x, y, z, k)
foo(3, 4) # 3 4 42 12foo(5, 3, k=9) # 5 3 42 9
![Page 64: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/64.jpg)
return
• La sintassi è: return valore• Se il valore di ritorno viene omesso viene
ritornato None• Se il flusso del programma esce dalla funzione
senza aver trovato un’istruzione return vieneritornato None
![Page 65: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/65.jpg)
Esempio
def anyOdd(xs):for v in xs:
if v % 2 == 1: return Truereturn False
def mult(a,b):if b == 0: return 0rest = mult(a,b - 1)value = a + restreturn value
![Page 66: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/66.jpg)
Oggetti mutabili e immutabili
Oggetti immutabili Oggetti mutabili
>>> def f(a): a = 99
>>> b = 88 >>> f(b)>>> print(b) 88
>>> def changer(a, b): a= 2 b[0] = 'spam'
>>> X = 1>>> L = [1, 2] >>> changer(X, L) >>> X, L(1, ['spam', 2])
![Page 67: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/67.jpg)
Funzioni che restituiscono più valori
>>> def multiple(x,y):x = 2y = [3,4]return x, y
>>> X = 1>>> L = [1,2]>>> X,L = multiple(X, L)>>> X,L2, [3,4]
![Page 68: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/68.jpg)
Ricorsione
• Funzione che calcola il fattoriale
def fattoriale(n):if n <= 1: return 1return n*fattoriale(n-1)
n = int(input('Inserisci un numero: '))print("Il fattoriale di %d e' %d" % (n, fattoriale(n)))
![Page 69: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/69.jpg)
global
• L’assegnamento all’interno di una funzioneassegna il valore ad una variabile locale
• Con global var si indica all’interprete che var èglobale e non locale
x = 5
def f():global xx = 42 # x è la variabile globale
![Page 70: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/70.jpg)
Accesso ai file
• I file vengono gestiti in modo simile al C• open(nomefile[, modo]) apre nomefile in
modalità modo (r è il valore di default) e ritornaun oggetto di tipo file
• I metodi principali degli oggetti file sono– read([size]) ritorna size byte dal file
• Se size è omesso legge tutto il file
– readline() ritorna una riga– readlines() ritorna una lista con le righe rimanenti nel
file– write(str) scrive str sul file
![Page 71: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/71.jpg)
Accesso ai file
• writelines(list) scrive list su file• close() chiude il file• flush() scrive su disco i dati presenti in eventuali
buffer• seek(offset[, pos])
– 0: dall’inizio del file (valore di default)– 1: dalla posizione corrente– 2: dalla fine del file
• tell() ritorna la posizione corrente• truncate([n]) tronca il file a non più di n byte
– Il valore di default è la posizione corrente
![Page 72: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/72.jpg)
Esempio
import sys
fsillabe = open('sillabe.txt', 'r')sillabe = fsillabe.read().split()fsillabe.close()
fdizionario = open('italiano.txt', 'r')paroleIta = fdizionario.read().split()fdizionario.close()
fparole = open('parole.txt', 'w')for s1 in sillabe:
for s2 in sillabe:parola = s1+s2if parola.lower() in paroleIta:
fparole.write(parola+'\n')fparole.close()
![Page 73: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/73.jpg)
Altro esempio
import sys
def createDictionary(filename):dict = {}myfile = open(filename, 'r’)content = myfile.read()myfile.close()
words = content.split()for word in words:
word = word.lower()if word not in dict:
dict[word] = 1else:
dict[word] = dict[word]+1return dict
def printWords(filename):dict = createDictionary(filename)for key in sorted(dict):
print(key,'-->',dict[key])
def main():if len(sys.argv) != 2:
print('Manca il nome del file’)sys.exit(1)
filename = sys.argv[1]printWords(filename)
main()
![Page 74: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/74.jpg)
Funzione per pulire stringa – v1
def pulisci(p):tmp = p.lower()n = 0
while n < len(tmp):if tmp[n] < "a" or tmp[n] > "z":
tmp = tmp.replace(tmp[n], ’’)else: n += 1
return tmp
![Page 75: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/75.jpg)
Funzione per pulire stringa – v2
def pulisci(p):bads = "!@#$%^&*()_-+={[}]|;:,<.>?/~`’”
tmp = p.lower()return tmp.strip(bads)
![Page 76: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/76.jpg)
Errore classico
l=[1,2,3,4,5,4,4]
for e in l:if e%2 == 0:
l.remove(e)
print(l)
![Page 77: Trendiest programming languages of 2019Python 2 o 3 •Per un’introduzione preliminare, non ci sono differenze significative •Forse la principale è printche diventa una funzione](https://reader036.fdocumenti.com/reader036/viewer/2022062610/61171c2c4e216a4142707b4a/html5/thumbnails/77.jpg)
Possibile soluzione
l=[1,2,3,4,5,4,4]p=0
while p < len(l):if l[p] % 2 == 0: l.remove(l[p])else: p += 1
print(l)