ATTENZIONE
- ATTENZIONE: ho aggiornato il file HW6obb.zip (22/11/19 ore 16:00) riscaricatelo
- ATTENZIONE: l'algoritmo.txt dev'essere un file di testo utf8, usate direttamente spyder per editarlo
- eventuali correzioni verranno inserite qui
- NOTA: il programma test_01.py DISATTIVA la funzione print, quindi non vedrete stampe. Per riattivare le stampe mettete a True la variabile DEBUG all'inizio del file.
Istruzioni
Per svolgere l'homework:
- Installate le librerie necessarie (compresa la libreria stopit)
- Scaricate il file HW6obb.zip e scompattatelo in una directory
- Lo zip contiene
- l'esercizio da svolgere, descritto all'inizio del file program01.py
- l'esercizio consiste nel realizzare, se necessario definendo funzioni ausiliarie, la funzione descritta all'inizio del file, completandone il codice
- altre librerie e file necessari ad eseguire i test sulla vostra macchina
- l'esercizio da svolgere, descritto all'inizio del file program01.py
- Lo zip contiene
- Posizionatevi nella directory HW6obb creata unzippando l'archivio ed editate il file program01.py completando la funzione indicata
- ATTENZIONE: il programma NON DEVE eseguire nessun input() o print(), infatti riceve tutte le informazioni di cui ha bisogno tramite i parametri della funzione che dovete completare e torna il risultato con return.
- ATTENZIONE: SONO VIETATE le variabili globali.
- ATTENZIONE: SONO VIETATE tutte le altre librerie a parte quelle già importate nel testo.
- ATTENZIONE: E' VIETATO copiare codice dalle librerie di sistema.
- ATTENZIONE: i vostri programmi NON DEVONO sfruttare eventuali periodicità o caratteristiche strutturali degli input, ma devono essere applicabili a qualsiasi input valido.
- ATTENZIONE: NON LASCIATE ISTRUZIONI DI TEST NEL PROGRAMMA, A MENO CHE NON SIANO DOPO UNA RIGA
- if __name__ == '__main__':
- vostre istruzioni di test che in questo modo non vengono eseguite durante l'import del file
- if __name__ == '__main__':
- Per eseguire i test
- aprite una finestra "Anaconda Prompt" e posizionatevi nella directory HW1opz ottenuta scompattando lo zip
- eseguite il comando (test senza timeout)
- pytest test_01.py -v -rA
- oppure (test con timeout di 1 secondo per ciascun test e con una stampa dei tempi impiegati per eseguire ciascun test)
- pytest test_01.py -v -rA --timeout 1 --durations 0
- oppure (test con timeout di 1 secondo per ciascun test e stampa dei tempi spesi dal programma nelle 20 funzioni complessivamente più lente)
- pytest test_01.py -v -rA --timeout 1 --profile
- Per far fermare i test al primo errore aggiungete l'opzione -x
- Per chi usa Spyder:
- è possibile eseguire i test direttamente da dentro Spyder installando il plugin spyder-unittest (ma senza timeout o parametri aggiuntivi)
- è possibile ottenere i tempi spesi in ciascuna funzione direttamente da dentro Spyder installando il plugin spyder-line-profiler
NOTA: per aprire i file di testo in formato utf8 NON usate Notepad che non riconosce gli accapi Unix ('\n') ma usate Spyder o Notepad++
Consegna
Dovrete consegnare:
- program01.py: il programma da voi realizzato
- algoritmo.txt: una descrizione in italiano (o se necessario in inglese) dell'algoritmo che avete realizzato. La descrizione NON deve contenere codice o pseudocodice troppo dettagliato e deve essere anonima (NON deve contenere il vostro nome/cognome/matricola/nick)
- ATTENZIONE: l'algoritmo.txt dev'essere un file di testo utf8, usate direttamente spyder per editarlo
La pagina di consegna è https://q2a.di.uniroma1.it/homeworks/delivery?homework=7
Scadenze
- ore 23.59 del 1/12 entro questa data dovete tutti consegnare i 2 files program01.py e algoritmo.txt
- Nella giornata del 2/12 verrà attivata la fase del peer-assessment formativo (correzione e suggerimento tra pari) e vi verranno assegnati 3 algoritmi anonimi da valutare e per i quali suggerire miglioramenti
- ore 23.59 del 3/12 entro questa data potete inserire i vostri giudizi e suggerimenti su TUTTI i 3 algoritmi e ricevere i giudizi dai vostri compagni
- NOTA: potreste ricevere meno di 3 suggerimenti
- ore 23.59 del 5/12 scadenza finale per indicare quanto vi sono stati utili TUTTI i suggerimenti e quindi consegnare una versione migliorata del vostro programma