Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python...
Transcript of Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python...
![Page 1: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/1.jpg)
Programmazione in PythonProgrammazione in Python
Moreno Marzollahttp://www.moreno.marzolla.name/
![Page 2: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/2.jpg)
Laboratorio di Informatica 2
Copyright © 2011, Moreno Marzolla(http://www.moreno.marzolla.name/teaching/LabInf2011/)
This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
![Page 3: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/3.jpg)
Laboratorio di Informatica 3
Python
● Linguaggio di programmazione interpretato
● Inventato negli anni '80 da Guido van Rossum
● Versione attuale del linguaggio: 3.x
![Page 4: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/4.jpg)
Laboratorio di Informatica 4
Chi usa Python?
● Google● NASA● Borsa di New York ● Industrial Light & Magic (quelli che fanno gli effetti
speciali di Star Wars)● Yahoo! (Yahoo mail e gruppi)● RealNetworks (usato per il testing del sistema)● RedHat (strumenti per l'installazione di Linux)● LLNL, Fermilab (controllo di applicazioni scientifiche)● ...
![Page 5: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/5.jpg)
Laboratorio di Informatica 5
Python (versione 3)
● Si può utilizzare Python in modalità interattiva o mediante file di programmi
● Modalità interattiva– È possibile scrivere espressioni che vengono valutate
quando si preme il tasto <Invio>– L'interprete mostra subito il risultato delle espressioni
● File di programmi– Si scrivono dei file di testo contenenti un programma Python
costituito da una sequenza di istruzioni– L'interprete esegue l'intero programma, leggendo le
istruzioni una dopo l'altra dal file
![Page 6: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/6.jpg)
Laboratorio di Informatica 6
Valori numerici
● 42 (intero, decimale)● 0x2A (intero, esadecimale)● 0.15 (numero reale)● 1.7e2 (numero reale, notazione scientifica)
![Page 7: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/7.jpg)
Laboratorio di Informatica 7
Le nostre prime espressioni
● L'espressione più semplice è quella composta da un valore numerico. Python risponde visualizzando il numero che abbiamo inserito
>>> 4242>>> 13.713.7
![Page 8: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/8.jpg)
Laboratorio di Informatica 8
Le nostre prime espressioni
● Possiamo scrivere espressioni più complesse, e Python risponde visualizzandone il valore
>>> 2+24>>> 13+7*227>>> 7/23.5>>> 7 // 2 Divisione intera3>>> 7 % 2 Resto della Divisione intera1
![Page 9: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/9.jpg)
Laboratorio di Informatica 9
Stringhe● Oltre a dati di tipo numerico, possiamo anche usare dati di tipo
stringa
● L'operatore somma (+) concatena due stringhe
● Non è possibile applicare l'operatore somma ad una stringa e ad un numero
>>> “pippo”'pippo'
>>> “pippo” + “pluto”'pippopluto'
>>> "pippo"+1Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: cannot concatenate 'str' and 'int' objects
![Page 10: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/10.jpg)
Laboratorio di Informatica 10
Stringhe● Per concatenare una stringa e un numero, occorre trasformare
il numero in stringa mediante la funzione str()
>>> “pippo”+str(1)'pippo1'>>> “pippo”+str(135.2)'pippo135.2'
![Page 11: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/11.jpg)
Laboratorio di Informatica 11
Operazioni su stringhe
● ...Invece è possibile applicare l'operatore prodotto (*) ad una stringa e ad un numero, e viceversa
● Possiamo scrivere espressioni più complicate che coinvolgono stringhe
>>> "pippo"*2'pippopippo'>>> 2*"pippo"'pippopippo'
>>> (2*"pippo")+”pluto”'pippopippopluto'>>> “(“ + “pippo”*2 + “)”'(pippopippo)'
![Page 12: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/12.jpg)
Laboratorio di Informatica 12
Operazioni su stringhe
● È possibile usare la funzione int() per convertire una stringa in un intero, e la funzione float() per convertire una stringa in un numero reale
>>> int(“123”)123>>> int(“-13”)-13>>> int(“13.2”)Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10: '13.2'>>> float(“13.2”)13.2>>> float(“-1”)-1.0
![Page 13: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/13.jpg)
Laboratorio di Informatica 13
Operatori aritmetici e logici
● Python supporta i valori logici True e False– Nota: 0, 0.0, “” equivalgono a False
● Operatori aritmetici– Le quattro operazioni: a+b, a-b, a*b, a/b– Elevamento a potenza: a**b calcola “a elevato alla b”– a%b è il resto della divisione intera a/b
● Operatori di confronto– a < b, a > b, a <= b, a >= b– a == b, a != b
● Operatori booleani– a or b (vero se a è vero OPPURE b è vero)– a and b (vero se a e b sono ENTRAMBI veri)– not a (vero se a è falso)
![Page 14: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/14.jpg)
Laboratorio di Informatica 14
Variabili
● Una variabile è una etichetta (nome) a cui è assegnato un valore
● Una variabile non può essere utilizzata prima che le venga assegnato un valore
● I nomi delle variabili possono essere composti da lettere, numeri e dal carattere underscore (_)– Il primo carattere non può essere un numero
● Esempi di nomi validi– x ciao x13 x1_y _ _ciao12
● Esempi di nomi non validi– 1x x-y $a però
![Page 15: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/15.jpg)
Laboratorio di Informatica 15
Assegnamenti
● In generale è possibile scrivere cose come:
● Questo viene valutato come segue:– Prima si valuta l'espressione a destra dell'operatore di
assegnamento (il simbolo '=')– Il risultato diventa il valore della variabile il cui nome è
sinistra del simbolo '='● Le istruzioni sopra assegnano il valore 18 a area
>>> base=12>>> altezza=3>>> area=(base*altezza)/2>>> area18
![Page 16: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/16.jpg)
Laboratorio di Informatica 16
Attenzione
● Quanto vale:
● x=x+1, vista come equazione aritmetica, non è risolvibile...
● ...ma questo è Python !– Prima si valuta la parte destra (x+1 vale 10+1=11)– Poi si assegna tale valore alla parte sinistra
● Dopo l'assegnamento, il nuovo valore di x è 11
>>> x = 10>>> x = x + 1
![Page 17: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/17.jpg)
Laboratorio di Informatica 17
Attenzione
● Quanto vale
● Valgono le solite regole di precedenza degli operatori– Il prodotto ha precedenza maggiore della somma– x*(2+y) – 7*x =
10*(2+12) - 7*2 =10*14 – 7*2 = 140 - 14 = 126
>>> x = 10>>> y = 12>>> z = 2>>> risultato = x*(2 + y) - 7*z;
![Page 18: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/18.jpg)
Laboratorio di Informatica 18
Istruzione condizionale “if-else”
condizione
Azione2...
Azione1...
False True
x=10y=5if x >= y:
print(x, “maggiore o uguale a“, y)else:
print(x, “minore di“, y)
if condizione:Azione1...
else:Azione2...
Python
![Page 19: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/19.jpg)
Laboratorio di Informatica 19
Istruzione condizionale “if-else”
condizione
Azione1...
True
if 0: print(“aaa”)print(“bbb”)
if condizione:Azione1
...
Python
False
![Page 20: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/20.jpg)
Laboratorio di Informatica 20
Istruzione condizionale “if-else”
cond1
Azione1
Trueif cond1:
Azione1...
elif cond2:Azione2...
else:Azione3...
Python
cond1
Azione2Azione3
● Nota: ci possono essere tanti “elif” quanti si vuole● “Azione1”, “Azione2” ecc. possono essere composte
da più righe di codice, purché siano tutte indentate allo stesso livello
False
TrueFalse
![Page 21: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/21.jpg)
Laboratorio di Informatica 21
Esempio
x = int(input(“Scrivi un numero ”))if x>0:
print(x, “e' positivo”)elif x == 0:
print(x, “e' zero”)else:
print(x, “e' negativo”)
![Page 22: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/22.jpg)
Laboratorio di Informatica 22
Esercizio
● Leggere da tastiera tre numeri interi da assegnare ad altrettante variabili diverse
● Scrivere a video il valore più grande tra quelli inseriti● Esempio:
Digita un numero: 3Digita un numero: 2Digita un numero: 7Il valore massimo e' 7
![Page 23: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/23.jpg)
Laboratorio di Informatica 23
Ciclo “while”
condizione
azione...
True
False
x=1while x<4:
print(x**2)x=x+1
print(“Fine”)
while condizione:azione...
Python
149Fine
L'output generato
![Page 24: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/24.jpg)
Laboratorio di Informatica 24
Esercizio
● Chiedere all'utente un intero N>0● Chiedere all'utente N numero interi● Stampare la somma di tutti gli N valori inseriti
dall'utente
Digita N 3Digita un valore 1Digita un valore 31Digita un valore -2La somma dei valori inseriti e' 30
![Page 25: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/25.jpg)
Laboratorio di Informatica 25
Possibile soluzione
N=int(input("Digita N "))somma=0while N>0: a=int(input("Digita un valore ")) somma = somma + a N = N - 1print("La somma dei valori inseriti e'", somma)
![Page 26: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/26.jpg)
Laboratorio di Informatica 26
Errore da evitare
● Se la condizione di un ciclo while rimane sempre vera, il ciclo non termina mai! Quindi è importante assicurarsi che “prima o poi” la condizione diventi falsa
● Esempio
questo programma continua a stampare “ciao” finché non lo si interrompe con Ctrl+C
x=1while x == 1:
print(“ciao”)
![Page 27: Programmazione in Python - Moreno Marzolla Home Page · Laboratorio di Informatica 5 Python (versione 3) Si può utilizzare Python in modalità interattiva o mediante file di programmi](https://reader035.fdocuments.us/reader035/viewer/2022063021/5fe457ea89822f619577d9f0/html5/thumbnails/27.jpg)
Laboratorio di Informatica 27
Esercizi
● Scrivere un programma Python che calcola il prodotto di due interi positivi x e y utilizzando la somma– Cioè, x*y deve essere calcolato come x+x+... + x (y volte)
● Scrivere un programma Python che chiede in input un intero positivo N e stampa a video i numeri pari compresi tra 1 e N (estremi inclusi)– Es: se N=13, stampa i numeri 2, 4, 6, 8, 10 e 12– Es: se N=1 non stampa nulla
● Modificare l'esercizio precedente per stampare tutti i numeri dispari compresi tra 1 e N (estremi inclusi)