80
Introduzione a Python ed installazione di Jupyter Marco D. Santambrogio – [email protected] Emanuele Del Sozzo – [email protected] Lorenzo Di Tucci – [email protected] Giuseppe Natale – [email protected] Marco Rabozzi – [email protected] Alberto Scolari – [email protected] Ver. aggiornata al 7 Novembre 2016

Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – [email protected]

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Introduzione a Pythoned installazione di Jupyter

Marco D. Santambrogio – [email protected] Del Sozzo – [email protected] Di Tucci – [email protected] Natale – [email protected] Rabozzi – [email protected] Scolari – [email protected]. aggiornata al 7 Novembre 2016

Page 2: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Agenda

• Introduzione a Python

• Tipi e costrutti

• Liste, dizionari e insiemi

• Funzioni

• Classi

• File

2

Page 3: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Installazione

• Anaconda fornisce:• Python Virtual Machine• IDE per la scrittura di codice Python (Spyder, Jupyter)

• Scaricare Anaconda dal seguente link:• https://www.continuum.io/downloads

• Scegliere solo Python 3.5

3

Page 4: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Cosa è Python?

• Python è un linguaggio di programmazione

• Di alto livello• Interpretato• Debolmente tipizzato• Orientato agli oggetti

• E’ comodo per sviluppare rapidamente applicazioni e script

• Documentazione: https://www.python.org/doc/

4

Page 5: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

C vs Python

5

C- Basso livello- Compilato- Fortemente tipizzato- Non a oggetti

Python- Alto livello- Interpretato- Debolmente tipizzato- A oggetti

Page 6: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

C vs Python

6

C- Basso livello- Compilato- Fortemente tipizzato- Non a oggetti

Python- Alto livello- Interpretato- Debolmente tipizzato- A oggetti

Allocazione esplicita della memoria (gestione dei puntatori)

Allocazione implicita della memoria

Page 7: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

C vs Python

7

C- Basso livello- Compilato- Fortemente tipizzato- Non a oggetti

Python- Alto livello- Interpretato- Debolmente tipizzato- A oggetti

file.c

gcc

codicemacchina

file.py

interpretePython

codiceinterpretato

Page 8: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

C vs Python

8

C- Basso livello- Compilato- Fortemente tipizzato- Non a oggetti

Python- Alto livello- Interpretato- Debolmente tipizzato- A oggetti

int a;a = 5; //Correttoa = “stringa”; //Errore!!

a = 5 #Correttoa = “stringa” #Correttoa = 1.3 #Corretto

Il tipo della variabile va dichiarato esplicitamente

Nessuna dichiarazione esplicita di tipo

Page 9: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

C vs Python

9

C- Basso livello- Compilato- Fortemente tipizzato- Non a oggetti

Python- Alto livello- Interpretato- Debolmente tipizzato- A oggetti

void sort(int * array){...}...int vet[] = {1, 6, 4, 8, 9};sort(vet);

vet = [1, 6, 4, 8, 9]vet.sort()

sort èunafunzionedell’oggetto vetedagiscesudiesso

Page 10: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Introduzione alla sintassi Python

• Le variabili non vanno dichiarate prima di essere usate

• Non è necessario usare i punti e virgola alla fine di ogni istruzione

• I costrutti (if-else, for, funzioni) usano i duepunti al posto delle graffe di apertura e devono essere indentati con spazi o tabulazione (evitare di usarli entrambi)

• I commenti si inseriscono con # (singola linea) o ‘‘‘commento’’’ (multi linea/docstring)

10

Page 11: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Jupyter

Una volta installato Anaconda, aprite Jupyter e create un nuovo notebook Python

11

Page 12: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Hello World

Proviamo a scrivere un Hello World in Python…

… e ad eseguirlo sull’interprete

12

Page 13: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Input / Output

• Per leggere da linea di comando, usate la funzione input()

• Per stampare valori a schermo, usate la funzione print()

• Il risultato è:

13

Page 14: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Input / Output: stampa di stringhe

• Se volete stampare una stringa insieme ad un valore, è necessario convertire il valore in una stringa e concatenarli

• La concatenazione è fatta usando l’operatore +• I valori letti con input() sono stringhe!

• Per convertire un numero in una stringa, usate la funzione str(obj)• Per passare da stringa ad intero, int(obj)…se è possibile!

14

Page 15: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Esempio di tipizzazione debole

15

• Vediamo cosa succede quando prima assegniamo a due variabili i caratteri rappresentanti due numeri e li sommiamo

• Assegniamo ora alle stesse variabili i due interi precedenti e sommiamoli ancora

Page 16: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Inclusione librerie

• Come in C, è possibile importare librerie (moduli) ed usare le funzioni definite all’interno

• Esistono differenti modi di importare e usare i moduli:

16

import os#importalospaziodeinomidelmoduloos

import osas O#importalospaziodeinomidelmodulooscomeO

from osimport *#importatuttodallospaziodeinomidelmoduloos

from osimport curdiras CCfrom osimport listdiras LS#importaunelementospecificoconunalias

os.curdiros.listdir(“Desktop”)

O.curdirO.listdir(“Desktop”)

curdirlistdir(“Desktop”)

CCLS(“Desktop”)

Page 17: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Funzioni utili

• len(obj) riporta la lunghezza dell’oggetto obj (stringa, lista, etc.) passata come argomento

• dir(obj) riporta tutti i dati e le funzioni contenute in un modulo

• help(obj) mostra la documentazione relativa ad un oggetto obj

17

Page 18: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Tipi e costrutti in Python

Page 19: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Tipi base• I tipi (classi) base di python sono:

19

tipi esempioint 1,2,3float 1.5,2.2,4.3bool True,Falsestr “abc”,“stringa”list [1,2,3,4],[”abc”,“def”,“ghi”]dict {chiave1:valore1,chiave2:valore2}tuple (1,2,3,4),(“abc”,“def”,“ghi”)set {1,2,3,4},{“abc”,“def”,“ghi”}

Page 20: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Tipi base

• Per sapere il tipo di una variabile, usate la funzione type(obj)

• Per sapere I metodi e attributi di untipo, usate la funzione dir sull’oggetto,or la funzione help sul tipo

20

Page 21: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Operatori logici

21

Operazioni C Python

Andlogico && and

Orlogico || or

Notlogico ! not

Uguaglianza ==,!= ==,!=,is,isnot

Confronto <,>,<=,>= <,>,<=,>=

Page 22: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Operatori logici - uguaglianza

22

==, != verifica se due oggetti hanno lo stesso valore

is, is not verifica se due oggetti sono lo stesso oggetto

Operazioni C Python

Andlogico && and

Orlogico || or

Notlogico ! not

Uguaglianza ==,!= ==,!=,is,isnot

Confronto <,>,<=,>= <,>,<=,>=

Page 23: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

If - else

• La struttura base di un if-else è:

• Se è necessario usare più if-else in cascata, usate elif:

23

elif

Page 24: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Ciclo while

• La sintassi del ciclo while in Python è identica a quella del C:

• Inoltre, a differenza del C, è possibile inserire un ramo elsealla fine del while

• Il ramo else verrà eseguito quando la condizione del while diventa falsa

24

Page 25: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Ciclo for

• Il ciclo for di Python è abbastanza diverso dal C

• Una variabile itera su una serie di valori in una sequenza

• La sequenza può essere:• Una lista, dizionario, tupla, insieme• Una stringa• Un iteratore

• Anche alla fine del for si può inserire il ramo else

25

Page 26: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Iteratori• Gli iteratori sono oggetti che restituiscono una sequenza di oggetti uno alla

volta tramite il metodo next()

• L’iteratore che si usa solitamente nel ciclo for è range, la cui sintassi è:

• Solo il parametro fine è obbligatorio, mentre inizio e passo opzionali:• L’iterazione va fino a fine escluso• In mancanza di inizio, l’interazione parte da 0• In mancanza di passo, il passo di default è 1• Il passo può essere inserito solo se è presente anche l’inizio

• Se inizio è maggiore (o uguale) a fine, il for non verrà eseguito (a meno di un passo negativo)

26

Page 27: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Iteratori: esempi• La variabile i va da 0 a 10 (escluso) con passo 1

• La variabile i va da 20 a 30 (escluso) con passo 1

• La variabile i va da 10 a 60 (escluso) con passo 5

• La variabili i va da 20 a 10 (escluso) con passo -1

27

Page 28: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Break e continue

• Il comando break serve per uscire dall’esecuzione di un ciclo(in questo caso, NON viene eseguito l’eventuale else del ciclo)

• Il comando continue serve per saltare all’iterazione successiva del ciclo

28

Page 29: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Liste, dizionari e insiemi in Python

Page 30: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Liste• Le liste sono oggetti di dimensioni variabili che contengono altri

oggetti in un ordine preciso dato dall’inserimento

• Le liste possono contenere diversi tipi

• Differenza tra liste Python e array in C (tipi diversi e lunghezza dinamica)

30

C

- Gli array non possono contenereelementi di tipi diversi

- Gli array non possono cambiare lapropria dimensione

Python

- Le liste possono contenereelementi di tipi diversi

- Una lista può cambiare la propriadimensione

Page 31: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Creazione di una lista

31

• Una lista può essere creata in due modi:• Operatore [ ]• Funzione list() … quindi evitate di chiamare una lista list!

• Esempi di creazione con l’operatore [ ]• [ ] crea una lista vuota• [val1, val2, val3] crea una lista

a partire dai valori inseriti

• Esempi di creazione con la funzione list()• list() crea una lista vuota• list(iteratore) crea una lista

a partire dall’iteratore

Page 32: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Lettura, inserimento e rimozione di elementi

32

• Letturalista[indice] dove indice è la posizione dell’elemento a cui voler

accedere

• Inserimento• append(val) inserisce l’elemento val in coda alla lista• insert(indice, val) inserisce un valore in posizione indice

Page 33: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Lettura, inserimento e rimozione di elementi

33

• Rimozione• pop(indice) rimuove l’elemento alla posizione indice• remove(val) rimuove la prima occorenza del valore val

Page 34: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Scorrere gli elementi di una lista

34

• Per scorrere una lista solitamente si usa un ciclo for come in C

• E’ anche possibile iterare direttamente sulla lista

• In questo caso i assume il valore di ognuno degli elementi presenti all’interno della lista

Page 35: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Altre operazioni sulle liste

35

• E’ possibile usare indici negativi sulle liste:-1 restituisce l’ultimo elemento, -2 il penultimo, …

• La funzione reverse() inverte una lista stessa

Page 36: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Altre operazioni sulle liste

36

• E’ possibile concatenare due liste con l’operatore +

• Si può creare una lista di N elementi uguali moltiplicando una lista contenente gli elementi desiderati per N

Page 37: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Liste di liste

37

• Una lista può essere definita all’interno di un’altra lista

• Per accedere ad un certo elemento di una delle liste, si accede prima alla lista di interesse e poi all’elemento corrispondente

Page 38: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Definire matrici tramite liste

38

• Le matrici in Python possono essere definite come lista di liste

• La lista più esterna contiene le righe della matrice, quelle più interne gli elementi delle colonne relative a quella riga

• Esempi di creazione di matrice

• Si possono creare “matrici” con righe di dimensioni diverse

Page 39: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

List comprehension

39

• List comprehension è un metodo che permette di costruire liste in maniera veloce e compressa

• Si crea una lista a partire da una descrizione inserita tra [ ]

• x indica il valore che voglio andare ad inserire nella lista• Il valore inserito nella lista può essere anche il risultato di operazioni

Page 40: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

List comprehension

40

• La lista può essere costruita usando anche condizioni (if-else)

• E’ possibile costruire una matrice con list comprehension

Page 41: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Operatore ternario

• Questa list comprehension si basa su un operatore ternario, ossia un operatore che restituisce un certo valore basandosi sul fatto che una condizione sia vera o falsa

• Se la condition è vera, l’output dell’istruzione sarà il valore cond_true, altrimenti il valore cond_false

41

Page 42: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Tipi immutabili e mutabili

42

• I tipi immutabili vengono passati per copia alle funzioni:• La funzione riceve una copia dei parametri• Le modifiche ai parametri non vengono viste al di fuori della funzione

• I tipi mutabili vengono passati per riferimento alle funzioni:• La funzione riceve il riferimento dei parametri (stile array in C)• Le modifiche ai parametri vengono viste al di fuori della funzione

Tipiimmutabili Tipimutabili

int listfloat dictbool setstrtuple

Page 43: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Dizionari• I dizionari in Python sono uno strumento molto potente che consente di

organizzare i dati sotto forma di coppie <chiave, valore>

• Data una chiave, è possibile chiedere al dizionario di fornirci il relativo valore (se presente)

• La chiave deve essere un tipo immutabile (int, float, str, …) mentre il valore può essere di qualunque tipo

• I dizionari vengono usati comunemente per salvare delle associazioni:

• Dato il nome ed il cognome di una persona (chiave), recuperare il suo numero telefonico (valore di tipo intero)

• Dato il nome di un corso (chiave) recuperare la lista dei docenti che hanno insegnato quel corso (valore di tipo lista)

• Dato il nome di una città (chiave) recuperare l’elenco telefonico degli abitanti di quella città (valore di tipo dizionario)

43

Page 44: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Creare un dizionario

• Un dizionario può essere creato in due modi:• Operatore {}• Funzione dict()

• Esempi di creazione con l’operatore {}

• Esempi di creazione con la funzione dict()

44

chiavevalore

Page 45: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Aggiungere, modificare e rimuovere elementi

• Per aggiungere un elemento al dizionario o modificarlo se già esiste, si utilizzano le parentesi quadre:

• Per rimuovere un elemento dal dizionario partendo dalla sua chiave, si usa pop(chiave):

45

Page 46: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Accedere agli elementi di un dizionario

• Il numero di elementi presenti nel dizionario si ottiene usando len(dizionario)

• Per leggere il valore corrispondente ad una chiave si usano ancora le parentesi quadre

• Per verificare se una chiave esiste si può utilizzare l’operatore in:

46

Page 47: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Iterare sugli elementi di un dizionario

• Un dizionario dà la possibilità di iterare sulle chiavi presenti al suo interno. Sfruttando le chiavi è poi possibile ottenere i valori corrispondenti

• Esempio:

47

Page 48: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Insiemi• L’insieme in Python è un tipo di dato che ha proprietà simili agli

insiemi matematici

• Un insieme contiene un certo numero di elementi tutti distinti tra loro

• Gli elementi di un insieme non sono ordinati (come accade invece per le liste)

• Gli insiemi vengono comunemente usati per verificare la presenza o meno di un certo elemento

48

Page 49: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Creazione di un insieme

• Creazione di un insieme vuoto con set()

• Creazione di un insieme partendo da un iteratore set(iteratore)

• Creazione di un insieme a partire da una lista con set(lista)(elementi duplicati vengono considerati una sola volta)

49

Page 50: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Insiemi: operazioni base

• Inserimento di un nuovo elemento con add(elemento)(inserimenti multipli non hanno effetto)

• Rimozione di un elemento con discard(elemento) (la rimozione di un elemento non presente non genera errore)

• Verificare la presenza di un elemento usando in

50

Page 51: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Iterare sugli elementi di un insieme

• Per ottenere il numero di elementi presenti in un insieme, utilizzare la funzione len(insieme):

• Per scorrere uno ad uno gli elementi di un insieme è sufficiente usare il seguente ciclo for:

51

Page 52: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Insiemi: unione, intersezione, differenza

• Unione C tra l’insieme A e l’insieme B (l’insieme di tutti gli elementi contenuti in A o in B):

• Intersezione C tra l’insieme A e l’insieme B (l’insieme di tutti gli elementi contenuti in A e in B):

• Differenza C tra l’insieme A e l’insieme B (l’insieme di tutti gli elementi contenuti in A ma non in B):

• Per scoprire quali altre operazioni sono possibili sugli insiemi, utilizzate la funzione help ( help(set()) )

52

Page 53: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Funzioni in Python

Page 54: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Funzioni• Le funzioni sono porzioni di programma riutilizzabili, che possono

essere richiamate quando necessario

• Una funzione Python può ricevere 0 o più parametri e generare 0 o più output

• Differenza tra funzioni Python e funzioni C

54

C

- Le funzioni possono ritornare alpiù un risultato

- Occorre dichiarare il tipo deiparametri e del risultato

- Se necessario o lo si desidera, èpossibile definire un prototipo

Python

- Lefunzionipossonoritornarepiùrisultati

- Nonoccorredichiarareitipideiparametriediltipodirisultato

- Lefunzionivengonodefinite/ridefinitedinamicamente:noprototipi

Page 55: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Definizione e chiamata di una funzione

55

• Per definire una funzione si utilizza la parola chiave defseguita dal nome della funzione e dai nomi degli input (attenzione ai “:” finali ed all’indentazione del codice!):

• La chiamata di funzione si esegue specificando il nome della funzione seguita degli eventuali valori di input

• NOTA: al momento della chiamata, la funzione deve essere stata definita

Page 56: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Passaggio di parametri - esempi

56

Qualèl’output?

Page 57: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Passaggio di parametri - esempi

57

Qualèl’output?1) var assumeiltipoint

2) Ilvaloredivarvienecopiatoina

3)modificadelvaloredia

Page 58: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Passaggio di parametri - esempi

58

Qualèl’output?

Page 59: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Passaggio di parametri - esempi

59

Qualèl’output?1) var assumeiltipolist

3)modificaall’oggettoacuiasiriferisce

2) a prendeilriferimentodivar

Page 60: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Passaggio di parametri - esempi

60

Qualèl’output?

Page 61: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Passaggio di parametri - esempi

61

Qualèl’output?1) var assumeiltipolist

3) a riceveilriferimentodiunanuovalista

2) a prendeilriferimentodivar

Page 62: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Funzioni: ritornare i risultati

Per ritornare un risultato, è necessario utilizzare la parola chiave return separando i valori ritornati da virgola

62

Page 63: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Introduzione alle classi in Python

Page 64: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Classi

• Le classi sono delle strutture dati il cui scopo è quello di contenere variabili di tipo diverso e funzioni utili a fornire funzionalità relative ad un certo dato che si vuole rappresentare

• A differenza delle struct presenti in C, le classi possono contenere anche funzioni

• Una istanza di una classe si chiama oggetto

64

C PythonDichiarazionedivariabiliofunzioni

Page 65: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Namespace

• Quando si crea una classe (vale anche per le funzioni), le variabili/funzioni che si dichiarano risiedono all’interno dello spazio dei nomi (namespace) generato per quella classe/funzione

• Il namespace è un mapping da nomi a oggetti (simile ad un dizionario) che permette di invocare gli attributi e funzioni definite all’interno di quel namespace

• Ad esempio, quando parte l’interprete Python, alcune funzioni sono già presenti all’interno del namespace iniziale, come print()

• E’ possibile aggiungere funzioni/attributi e altri namespace ad uno namespace tramite il comando import

65

Page 66: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Scope

• Lo scope è una regione testuale di un programma Python in cui è possibile invocare direttamente attributi/funzioni di un namespace

• Attributi/funzioni di una classe possono essere chiamati in modo diretto solo all’interno della classe stessa, mentre, da fuori, è necessario usare un oggetto della classe per chiamarli (tramite l’utilizzo del “.”)

• All’interno di uno scope, è possibile anche ridefinire attributi/funzioni definite in scope più esterni

66

Page 67: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Esempio

67

varglobale

var ridefinitadatest_scope

Tramiteglobal,test_scopemodificavar

Page 68: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Definizione classe

• Per definire una classe, si usa la keyword class:class nomeClasse:

• All’interno della definizione della classe, si possono dichiarare attributi e funzioni

68

Ilparametroselfserveperindicarelevariabili/funzionidefinitedentrolaclasse,dall’internodellaclassestessa

Creazioneoggetto

selfnonvapassatodurantel’invocazionedellafunzione

Page 69: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Funzione __init__

• E’ possibile definire all’interno della classe una funzione speciale chiamata __init__ che serve per inizializzare gli attributi della classe durante la sua creazione

• Non è necessario che gli attributi siano già stati dichiarati

69

a eb noneranogiàstatidichiarati

Ivaloridi a eb vannopassatidurantelacreazionedell’oggetto

Page 70: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Ereditarietà

• Una classe può essere creata a partire da un’altra classe già esistente e più generica

• La nuova classe eredita tutti gli attributi e funzioni definite nella classe padre

• L’ereditarietà serve per specializzare una classe rispetto ad una classe generica

• Per ereditare da una classe padre, la sintassi è:class classeFiglio(classePadre):

• Python supporta anche l’ereditarietà multipla con la seguente sintassi:

class classeFiglio(classePadre1, classePadre2, classePadre3):

70

Page 71: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Esempio

71

Classedacuisieredita

passservepernondoverspecificarel’implementazionediunaclasse,funzione,ifecc.

Page 72: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Overriding

• L’overriding si usa per ridefinire, all’interno della classe figlio, funzioni che sono state già definite dalla classe padre, in modo da renderle più specifiche per il figlio

• Per eseguire l’overriding, basta ridefinire una funzione usando lo stesso nome

• Di solito si esegue l’overriding del costruttore __init__

72

Page 73: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Esempio

73

Overridingdellafunzione__init__

LafunzioneprintValappartienesoloaclasseFiglio,nonpuòesserechiamatadaclassePadre

Page 74: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

File in Python

Page 75: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

File

• Python fornisce varie funzionalità per operare su file

• In particolare, permette di:• Aprire,• Leggere,• Scrivere,• Chiudere file

• La documentazione per l’utilizzo di funzioni di I/O è disponibile qui: https://docs.python.org/3/tutorial/inputoutput.html

75

Page 76: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Funzioni su file

• Apertura filef = open(filename, mode)

• Chiusura filef.close()

76

Nomedelfile Modalitàdiapertura:‘r’:lettura‘w’:scrittura(eliminailprecedentecontenuto)‘x’:creaunnuovofileperlascrittura‘a’:scriveincoda‘b’:modalitàbinaria‘t’:modalitàtestuale‘+’:apreunfileperaggiornarlo

Page 77: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Funzioni su file

• Lettura fileout = f.read(size)

out = f.readline()

• Scrittura filef.write(stringa)

77

Leggesize caratteriSeomesso,leggefinoallafinedelfile

Leggeunarigadelfile

ScriveunastringasufileE’quindinecessarioconvertireidatiinstringheperscriverli

Page 78: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Funzioni su file

• Posizione corrente nel fileout = f.tell()

• Cambiare posizione nel file

f.seek(offset, da_dove)

78

Restituiscelaposizionecorrenteall’internodelfile

Offset:spiazzamentodicaratteririspettoadunpuntodiriferimento

da_dove:puntodiriferimentoSe0:iniziofile(valoredidefault)Se1:posizionecorrenteSe2:finefile

Page 79: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Esempio file

79

Seilfilenonèapertoinmodalitàbinaria,lafunzioneseekpuòaverecomepuntodiriferimentosolol’iniziodelfile

Page 80: Introduzione a Python ed installazione di Jupyterxph.necst.it/2017/software/lessons/Lesson_1_PYNQ.pdfIntroduzione a Python ed installazione di Jupyter Marco D. Santambrogio – marco.santambrogio@polimi.it

Link utili• Sito hackathon

http://xph.necst.it

• Documentazione di Python 3https://docs.python.org/3.4/

• Manuale gratuito di Python 3http://www.diveintopython3.net

• Codecademy – corso interattivo di Pythonhttps://www.codecademy.com/learn/python

• Documentazione di Pynqhttp://www.pynq.io/documentation.html

• Documentazione di NumPyhttp://www.numpy.org

• Documentazione di matplotlibhttp://matplotlib.org

80