1 of 34

Seminario

Fondamenti Python

Relatore: David Leoni david.leoni@unitn.it

Docente proponente: Ivano Bison

Anno 2018 - ediz Marzo / Aprile

Queste slide : davidleoni.it/fp18

2 of 34

Obiettivi

Fondamenti di programmazione Python:

  • tipologie di dati
  • principali costrutti
  • concetti di funzione

3 of 34

Programma Google Calendar

Vedere slide successiva per appelli

4 of 34

Appelli per modalità d’esame, vedere slide seguente Google Calendar

  • E’ ammesso all’esame chi abbia partecipato al seminario per almeno il 75% delle ore di lezione (non 80% come era indicato sul bando), Tradotto: al massimo sono consentite 3 assenze
  • Esame finale (+ eventuale recupero). Voto: passato / non passato. Crediti: 3 CFU
  • Sarà possibile partecipare a max due appelli.
  • Il secondo appello ha la particolarità di essere dopo l'inizio del seminario Algoritmi in Python (previsto per il 3 di Maggio), a cui questo corso dovrebbe essere propedeutico. Chi fallisse o non partecipasse al primo appello, può comunque iniziare a partecipare al seminario di algoritmi, e presentarsi poi al secondo appello.

Mandate una mail a david.leoni@unitn.it per farmi sapere a quali date intendete iscrivervi (se non rispondo consideratevi iscritti). Chi avesse problemi a partecipare agli appelli, faccia sapere che troviamo una qualche soluzione.

02/05/2018

Appello 1

14.00-16.00

Lab 3

07/05/2018

Appello 2

14.00-16.00

Lab 3

30/05/2018

Appello 3

17.00-19.00

Lab 3

5 of 34

Modalità d’esame

L'esame sarà open book, se volete potete portarvi stampe di

- Pensare in Python

- i tutorial di Nicola Cassetta

- la documentazione ufficiale di Python 3

Questo materiale sarà comunque anche disponibile nei computer del laboratorio.

Molto probabilmente gli esercizi dell'esame saranno versioni leggermente modificate di esempi presi dal libro Pensare in Python e dai tutorial di Nicola Cassetta, quindi se vi fate tutte la parti indicate nelle slide avrete ottime probabilità di passare l'esame.

6 of 34

Materiale del corso

Libro Pensare in Python seconda edizione (Think Python)

  • Passo passo, adatto a principianti
  • versione online
  • zip offline
  • PDF

Sito Tutorial Python di Nicola Cassetta

(+ qualche riferimento occasionale da sito SoftPython di David Leoni)

7 of 34

Google Colab

  • Permette di lavorare in modo collaborativo online a fogli Jupyter (l’interfaccia è molto simile)
  • I fogli .ipynb sono salvati sul Google Drive

Per ciascuna lezione ci sarà un foglio condiviso su cui potrete temporaneamente editare per la durata della lezione (non vandalizzateli, grazie).

8 of 34

Software usati in laboratorio:

Python 3

Sistema operativo: Windows

Distribuzione: Anaconda

Editor: Jupyter

il TRE ! NON il due !

Ma va anche su Mac, Linux, dappertutto !

Distribuzione = Python + pacchetti python + librerie native

Jupyter è un notebook, cioè permette di inserire comandi Python in celle e vedere subito il risultato nella cella successiva

9 of 34

Se volete provare a casa

andate a guida all’installazione

Python 3

Sistema operativo: Windows, Mac, Linux, ...

Distribuzione: Windows: Anaconda

Mac: Homebrew

Linux: librerie di sistema

Editor: Jupyter, Spyder

il TRE ! NON il due !

Distribuzione =

Python + pacchetti python + librerie native

Fatelo, perchè….

se non scrivete codice Python,

non imparate Python!

10 of 34

Python Tutor 1/5 pythontutor.com

Ottimo sistema per visualizzare online l’esecuzione di codice Python

Sfruttatelo più che potete

Dovrebbe funzionare con la maggior parte degli esempi che tratteremo a lezione

11 of 34

Python Tutor 2/5

12 of 34

Python Tutor 3/5

Provate a inserire:

x = 5

y = 7

z = x + y

13 of 34

Python Tutor 4/5

Cliccando su Forward visualizzerai i cambiamenti nella memoria di Python

14 of 34

Python Tutor 5/5

Se vuoi usare librerie particolari come numpy,

Prova a selezionare

Python 3.6 with Anaconda (sperimentale !)

15 of 34

Lezione 1 - lo scopo del programma, Variabili, espressioni ed istruzioni

Foglio Colab lez 1: bit.ly/2G1SIsR

16 of 34

Lo scopo del programma

17 of 34

Variabili, espressioni ed istruzioni

18 of 34

Lezione 2

Funzioni, istruzioni condizionali, ricorsione

Foglio Colab lez 2: bit.ly/2pyvZLt

19 of 34

Funzioni

Vedere Capitolo 3 Pensare in Python

Vedere Lezione 4 Nicola Cassetta

Fare esercizi

20 of 34

Espressioni condizionali e ricorsione

21 of 34

Lezione 3 - Funzioni con valori di ritorno e Iterazione

Google Colab Lezione 3: clicca qui

22 of 34

Funzioni con valori di ritorno

Vedere Capitolo 6 Pensare in Python

  • NOTA: il libro chiama le funzioni con valori di ritorno Funzioni produttive, e le funzioni senza valori di ritorno funzioni nulle, ma nessuno usa questa terminologia !

Vedere Lezione 4 Nicola Cassetta

23 of 34

Esercizi:

Esercizio 6.2 Funzione ackermann A(m,n)

24 of 34

Cominciamo a testare più seriamente ...

Come testare le nostre funzioni ?

  • Print ?�
  • Meglio assert !

(ci sono metodi migliori come unittest, ma per adesso usiamo assert

25 of 34

Esercizi:

Esercizio 6.3 Funzione palindromo(parola). Come testarla?

Provate a mettere questo codice di test in una cella. Ogni volte che modificate il codice della funzione palindromo, rieseguite il codice di test:

assert palindromo("a")�assert palindromo("aa")�assert not palindromo("ab")�assert palindromo("abba")�assert not palindromo("abbca")�assert palindromo("abaaba")�assert not palindromo("ciao")

print("passato tutti i test !")

26 of 34

Esercizi

Esercizio 6.4 Funzione potenza(a,b)# metti questo codice in una cella:��def potenza(a, b):� # scrivi qua��assert potenza(3, 3)�assert potenza(3.0, 3)�assert potenza(3, 3.0)�assert potenza(0, 0) # ?�assert potenza(27, 3)�assert potenza(64, 4)�assert not potenza(10, 3)�assert not potenza(9.1, 3) �assert potenza(9, 3) �print("passato tutti i test !")

in un’altra cella, metti questo. Che succede se lo esegui? ��assert not potenza(3, 6) �print("passato veramente tutti i test !")

27 of 34

Iterazione

Leggere Capitolo 7 Pensare in Python:

Lasciar perdere esercizi in fondo, e guardare piuttosto esercizi del Cassetta:

Vedere Tutorial Istruzione while di Nicola Cassetta

28 of 34

Lezione 4 - Stringhe e liste

Google Colab Lezione 4: clicca qui

29 of 34

Stringhe

Vedere Libro Pensare in Python:

Capitolo 8 ‘Stringhe’

Capitolo 9 ‘Giochi con le parole’

Vedere Tutorial Nicola Cassetta:

Capitolo 2 ‘Stringhe e dati booleani’

Per chi vuole fare text mining, consiglio caldamente di

30 of 34

Liste

Vedere Capitolo 10 Pensare in Python

Es 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7

Vedere Lezione 11 Nicola Cassetta

In particolare Esercizio 11.1 e 11.2

31 of 34

Lezione 5 - Dizionari e tuple

Google Colab Lezione 5: link

32 of 34

Dizionari

Vedere Capitolo 11 Pensare in Python

  • Saltare memoizzazione (11.6)

33 of 34

Lezione 6 - Esercitazione: Scelta struttura dati, file

Google Colab Lezione 6: clicca qui

34 of 34

Esercitazione: Scelta struttura dati

anagram(s1,s2) deve ritornare True se s1 è l’anagramma di s2, �altrimenti ritorna False�La stringa s1 è l’anagramma della stringa s2 ?

anagram("ciao", "aoic")�anagram("babbo", "abbbo")�anagram("", "")�anagram("mazzo", "mazza")

Funzione anagram(s1, s2)

  • Soluzione 1: con liste ?
  • Soluzione 2: altra soluzione con liste ?
  • Soluzione 3: con dizionari ?
    • Come ?