Seminario
Fondamenti Python
Relatore: David Leoni david.leoni@unitn.it
Docente proponente: Ivano Bison
Anno 2018 - ediz Marzo / Aprile
Queste slide : davidleoni.it/fp18
Obiettivi
Fondamenti di programmazione Python:
Programma Google Calendar
Vedere slide successiva per appelli
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 |
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.
Materiale del corso
Libro Pensare in Python seconda edizione (Think Python)
Sito Tutorial Python di Nicola Cassetta
(+ qualche riferimento occasionale da sito SoftPython di David Leoni)
Google Colab
Per ciascuna lezione ci sarà un foglio condiviso su cui potrete temporaneamente editare per la durata della lezione (non vandalizzateli, grazie).
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
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!
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
Python Tutor 2/5
Python Tutor 3/5
Provate a inserire:
x = 5
y = 7
z = x + y
Python Tutor 4/5
Cliccando su Forward visualizzerai i cambiamenti nella memoria di Python
Python Tutor 5/5
Se vuoi usare librerie particolari come numpy,
Prova a selezionare
Python 3.6 with Anaconda (sperimentale !)
Lezione 1 - lo scopo del programma, Variabili, espressioni ed istruzioni
Lo scopo del programma
Vedere Capitolo 1 Pensare in Python
Variabili, espressioni ed istruzioni
Vedere Capitolo 2 Pensare in Python
Lezione 2
Funzioni
Espressioni condizionali e ricorsione
Lezione 3 - Funzioni con valori di ritorno e Iterazione
Google Colab Lezione 3: clicca qui
Funzioni con valori di ritorno
Vedere Capitolo 6 Pensare in Python
Vedere Lezione 4 Nicola Cassetta
Esercizi:
Esercizio 6.2 Funzione ackermann A(m,n)
Cominciamo a testare più seriamente ...
Come testare le nostre funzioni ?
(ci sono metodi migliori come unittest, ma per adesso usiamo assert
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 !")
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 !")
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
Lezione 4 - Stringhe e liste
Google Colab Lezione 4: clicca qui
Stringhe
Vedere Libro Pensare in Python:
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
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
Lezione 5 - Dizionari e tuple
Google Colab Lezione 5: link
Dizionari
Lezione 6 - Esercitazione: Scelta struttura dati, file
Google Colab Lezione 6: clicca qui
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)