[HOMEWORK] Homework 1 opzionale

andrea.sterbini (167800 points)
488 897 1728
asked Oct 20, 2021 in Avvisi by andrea.sterbini (167,800 points)
edited Oct 21, 2021 by andrea.sterbini

ATTENZIONE

  • eventuali correzioni verranno inserite qui, tenete d'occhio questa pagina
  • NOTA: quest'anno la funzione da implementare si chiama ex1 invece che es1
  • NOTA: il programma test_01.py DISATTIVA la funzione print, quindi non vedrete stampe. per riattivare le commentate/cancellate le righe

        with    self.ignored_function('builtins.print'), \
                self.ignored_function('pprint.pprint'), \

                self.forbidden_function('builtins.input'), \
                self.timeout(1), \
                self.timer(1):
            result = program.ex1(test_int_seq, test_subtotal)

in modo che diventino

        with self.forbidden_function('builtins.input'), \
                self.timeout(1), \
                self.timer(1):
            result = program.ex1(test_int_seq, test_subtotal)

Allo stesso modo potete eliminare il timeout commentando self.timeout e self.timer

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie
  • Scaricate il file HW1opz.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 HW1opz creata unzippando l'archivio ed editate il file program01.py
  • 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: 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 che viene fatto dai test
  • Per eseguire i test
    • aprite una finestra "Anaconda Prompt" e posizionatevi nella directory HW1opz ottenuta scompattando lo zip
    • 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 con stampa dei tempi spesi dal programma nelle 20 funzioni complessivamente più lente)
      • pytest test_01.py -v -rA --profile
    • Per far fermare i test al primo errore aggiungete l'opzione -x
    • Per chi usa Spyder 4:
      • è 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

Per la consegna dovrete consegnare solo il file program0X.py

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

Consegnando potete controllare come si posiziona il vostro programma nella graduatoria complessiva.

Potete consegnare più volte, vale l'ultima.

Scadenze

  • Questo homework non ha scadenza, non richiede il peer-assessment e non dà bonus.
2,674 views

2 Answers

federico_fiorelli (9670 points)
2 4 13
answered Oct 20, 2021 by federico_fiorelli (9,670 points)
Prof scusi, ma la consegna dà qualche punto qui sul forum?
D
Davide_Giannetti (720 points)
0 0 1
commented Oct 20, 2021 by Davide_Giannetti (720 points)
per la consegna di un qualsiasi homework basta andare sulla sezione Course del forum, da li andare su Submission per poi scegliere quale homework consegnare.
Burno (2630 points)
0 0 5
commented Oct 20, 2021 by Burno (2,630 points)
Credo che Federico abbia chiesto se la consegna dell'homework conferisca punti sul forum o meno.

Rispondendo alla domanda, penso di no. In caso contrario sarei contento di essere smentito :D
andrea.sterbini (167800 points)
488 897 1728
commented Oct 20, 2021 by andrea.sterbini (167,800 points)
No, i punti di Q2A si ricevono per aver aiutato gli altri rispondendo alle loro domande (senza spammare, plis).

Gli HW (anche opzionali) vi fanno fare esercizio (fondamentale a passare l'esame in laboratorio) e la consegna vi permette di vedere come ve la siete cavata rispetto ai timeout e rispetto ai colleghi
S
S3b4stian82 (2200 points)
3 6 27
answered Oct 20, 2021 by S3b4stian82 (2,200 points)
Una volta effettuata la submission, quanto tempo è richiesto per visualizzare le metriche sul codice ed i risultati dei test più leaderborad?

Grazie!
andrea.sterbini (167800 points)
488 897 1728
commented Oct 20, 2021 by andrea.sterbini (167,800 points)

Una quindicina di minuti (a meno che Murphy non ci metta lo zampino).

andrea.sterbini (167800 points)
488 897 1728
commented Oct 21, 2021 by andrea.sterbini (167,800 points)
Data altra spintina