[HOMEWORK] Homework 2 di recupero

andrea.sterbini (167800 points)
488 897 1728
asked Nov 12, 2021 in Avvisi by andrea.sterbini (167,800 points)
edited Nov 12, 2021 by andrea.sterbini

ATTENZIONE:

  • eventuali correzioni verranno inserite qui
  • NOTA: per eseguire i test SENZA i controlli ed il timeout modificate test_01.py settando la variabile DEBUG=True

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie (COMPRESO stopit)
  • Scaricate il file HW2rec.zip e scompattatelo in una directory
    • Lo zip contiene
      • l'esercizio da svolgere, descritto all'inizio del file program01.ita.py (in italiano) oppure program01.eng.py (in inglese)
        • 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 creata unzippando l'archivio e rinominate il file program01.ita con il nome program01.py
  • Editate il file program01.py implementando le funzioni necessarie a risolvere l'esercizio.
  • 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
  • Per eseguire i test
    • aprite una finestra "Anaconda Prompt" e posizionatevi nella directory ottenuta scompattando lo zip
    • eseguite il comando (test senza timeout)
      • pytest test_01.py -v -rA
    • oppure (con una stampa dei tempi impiegati per eseguire ciascun test)
      • pytest test_01.py -v -rA --durations 0
    • oppure (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:
      • è 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++

Scadenze

  • Gli homework di recupero scadono 5 giorni prima dell'esame che volete svolgere

Consegna entro le 23:59 di 5 gg prima dell'esame

Dovrete consegnare solo il file program01.py

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

Potete consegnare più volte, vale l'ultima.

3 Answers

A
AlessandroBavaro (10620 points)
4 8 24
answered Nov 30, 2021 by AlessandroBavaro (10,620 points)
Buongiorno Professore, ho consegnato l'HW di recupero per cercare di prendere un voto più alto.

Volevo sapere se i test segreti saranno eseguiti solo 5 giorni prima dell'esame o se ci fossero eventualmente altre date in cui vengono eseguiti i test.

le chiedo solo per sapere se effettivamente ho recuperato o no il voto dell' HM 2 precedente.

La ringrazio.
andrea.sterbini (167800 points)
488 897 1728
commented Nov 30, 2021 by andrea.sterbini (167,800 points)
se mi riesce faccio delle passate con i test segreti anche prima così potete correggere (ma non ti so dire quando)
c
campobassof (1000 points)
2 4 13
commented Dec 1, 2021 by campobassof (1,000 points)
Sarebbe molto gradito. Grazie.
Lovecrafts_Cat (530 points)
2 4 8
answered Dec 5, 2021 by Lovecrafts_Cat (530 points)

Buonasera, volevo far notare un errore in test_01.py.
Nelle righe 37-40 troviamo:

self.assertEqual(type(result), tuple,
     ('The output type should be: list\n'
     '[Il tipo di dato in output deve essere: list]'))

Dovrebbe invece dire:

'The output type should be: tuple\n'
'[Il tipo di dato in output deve essere: tuple]'))

Ero rimasto confuso quando ricevevo un TypeError che chiedeva una lista, mentre io ritornavo proprio una lista.

l
lucapalma (7130 points)
1 2 21
answered Jan 3 by lucapalma (7,130 points)
Buonasera Professore, non capisco come sia possibile che l'expected di "test_init-1000_txs-10" sia corretto.

Se consideriamo la struttura delle transazioni dovrebbe essere sostanzialmente impossibile che qualcuno che non riceva mai denaro e che provi a fare diverse transazioni (valide e non) si ritrovi con un conto in positivo. Facendo le transazioni manualmente mi risulta che solo 2694 abbia un balance positivo, mentre gli altri due siano indebitati. Com'è possibile che nessuno abbia debiti e che siano tutti in positivo?  Non riesco proprio a capire