[AVVISO] Homework 7 opzionale (senza scadenza)

andrea.sterbini (172680 points)
511 927 1776
asked Nov 28, 2019 in Avvisi by andrea.sterbini (172,680 points)
edited Nov 28, 2019 by andrea.sterbini

ATTENZIONE

  • ATTENZIONE: DOVETE INSTALLARE LA LIBRERIA stopit usando il comando (nella finestra Anaconda Prompt)
    • conda install -c conda-forge stopit
    • Questo per permettere di spostare la misura del tempo attorno alla chiamata della vostra funzione.
  • eventuali correzioni verranno inserite qui
  • NOTA: Per riattivare le stampe e disattivare il timeout cambiate la variabile DEBUG all'inizio di test_01.py

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie compreso stopit
  • Scaricate il file HW7opz.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
  • Posizionatevi nella directory HW7opz 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 o l'uso di qualsiasi meccanismo di caching per fregare il calcolo dei tempi.
  • 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
  • Per eseguire i test
    • aprite una finestra "Anaconda Prompt" e posizionatevi nella directory HW1opz ottenuta scompattando lo zip
    • NOTA: i test ora vengono sempre eseguiti con il timeout, per disattivarlo eliminate il blocco with nel metodo do_test
    • eseguite il comando
      • pytest test_01.py -v -rA
    • oppure (test con una stampa dei tempi impiegati per eseguire ciascun test)
      • pytest test_01.py -v -rA --durations 0
    • oppure (test che stampa dei tempi spesi dal programma nelle 20 funzioni complessivamente più lente)
      • pytest test_01.py -v -rA --profiling
    • 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 (senza scadenza)

Dovrete consegnare:

  • program01.py: il programma da voi realizzato

La pagina di consegna è https://q2a.di.uniroma1.it/homeworks/delivery?homework=9

    1 Answer

    J
    Jan Rogala (7260 points)
    3 4 37
    answered Dec 3, 2019 by Jan Rogala (7,260 points)
    Prof, la VM sembra non funzionare piu almeno per questo HW, ad un paio di persone compreso me non esegue i test
    andrea.sterbini (172680 points)
    511 927 1776
    commented Dec 3, 2019 by andrea.sterbini (172,680 points)
    Ogni tanto si incanta ... ora dovrebbe ripartire