[HOMEWORK] Homework 2 obbligatorio

andrea.sterbini (172780 points)
513 935 1789
asked Oct 22, 2020 in Avvisi by andrea.sterbini (172,780 points)
edited Oct 30, 2020 by andrea.sterbini

ATTENZIONE

  • eventuali correzioni verranno inserite qui
    • il risultato ritornato dalla funzione dev'essere una lista di interi
    • Se in Windows avete un errore di sintassi della libreria testlib
      • installate l'ultima versione di Anaconda (2020.07)
      • oppure cambiate la riga 46 di testlib da
      • print(f"Importing {name} (globals, locals, {fromlist=}, {level=}) (not allowed)")
      • a

      • print(f"Importing {name} (globals, locals, {fromlist}, {level}) (not allowed)")
  • 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 HW2req.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
      • un file di testo vuoto program01.txt in cui descrivere il vostro algoritmo
        • altre librerie e file necessari ad eseguire i test sulla vostra macchina
    • Posizionatevi nella directory HW2req creata unzippando l'archivio ed rinominate il file program01.ita/eng.py che preferite con il nome program01.py
    • Editate il file program01.py implementando le funzioni necessarie a risolvere l'esercizio.
    • Editate il file program01.txt e descrivete l'algoritmo utilizzato nel vostro programma.
    • ATTENZIONE: nel file program01.txt NON inserite nè codice nè il vostro nome/id, deve restare anonimo.
    • 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 HW2req 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++

    Scadenze

    • La prima scadenza obbligatoria per tutti è: ore 23:59 del 1° novembre 2020
    • Il 2 novembre vi verranno assegnati fino a 3 file program01.txt da valutare e consigliare entro le 23:59 del 3/11/20
    • Riceverete fino a 3 suggerimenti dai vostri colleghi e potrete a quel punto fare ulteriori consegne dopo aver valutato il consiglio ricevuto (fino alle 23:59 del 5/11/20)

    Prima Consegna obbligatoria entro le 23:59 del 1/11/20

    Dovrete consegnare entrambi i file program01.py e program01.txt entro la prima scadenza.

    Partecipando alla fase di peer-assessment (valutazione tra pari) avrete altri 4 giorni a disposizione.

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

    Potete consegnare più volte, vale l'ultima.

    11 Answers

    M
    Mattex (340 points)
    0 0 2
    answered Oct 22, 2020 by Mattex (340 points)
    Prof. Buongiorno, vorrei chiederle se possiamo creare ulteriori funzioni da immettere all'interno della funzione principale da consegnare.
    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 22, 2020 by andrea.sterbini (172,780 points)

    l'esercizio consiste nel realizzare, se necessario definendo funzioni ausiliarie, la funzione descritta all'inizio del file, completandone il codice

    D
    Dissidia (500 points)
    1 2 4
    answered Oct 22, 2020 by Dissidia (500 points)
    Salve professore, non mi è chiaro in che forma vada restituito l'output dell'esercizio (i punteggi dei giocatori)
    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 22, 2020 by andrea.sterbini (172,780 points)
    • eventuali correzioni verranno inserite qui
      • il risultato ritornato dalla funzione dev'essere una lista di interi
    f
    fabiodc95 (320 points)
    0 0 2
    answered Oct 22, 2020 by fabiodc95 (320 points)

    Buonasera Prof.,  

    nelle istruzioni lei scrive: "un file di testo vuoto program01.txt in cui descrivere il vostro algoritmo". L'analisi Top Down invece è richiesta oppure è sufficiente il solo pseudo-codice?

    Grazie per la pazienza

    Un saluto

    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 22, 2020 by andrea.sterbini (172,780 points)
    Descrivetelo come preferite. Meglio vi fate capire migliori possono essere i suggerimenti che ricevete.
    f
    fabiodc95 (320 points)
    0 0 2
    commented Oct 22, 2020 by fabiodc95 (320 points)
    Perfetto, la ringrazio.
    O
    Oakandrew (6400 points)
    4 26 63
    answered Oct 22, 2020 by Oakandrew (6,400 points)
    durante esecuzione di pytest linea 44 in testlib.py restituisce errore. il problema in print di f-string
    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 22, 2020 by andrea.sterbini (172,780 points)
    Che versione di Python usi? noi stiamo usando 3.7 o 3.8
    O
    Oakandrew (6400 points)
    4 26 63
    commented Oct 22, 2020 by Oakandrew (6,400 points)
    edited Oct 22, 2020 by Oakandrew

    3.8.6

    print(f"Importing {name} (globals, locals, {fromlist=}, {level=}) (not allowed)")

    Questa riga mi ha restituito errore ho cambiato da {fromlist=} a {fromlist}. Lo stesso ho fatto con "{level=}"

    Precisamente:::

    xxxx\Anaconda3\lib\site-packages\_pytest\python.py:501: in _importtestmodule
        mod = self.fspath.pyimport(ensuresyspath=importmode)
    xxx\Anaconda3\lib\site-packages\py\_path\local.py:701: in pyimport
        __import__(modname)
    <frozen importlib._bootstrap>:983: in _find_and_load
        ???
    <frozen importlib._bootstrap>:967: in _find_and_load_unlocked
        ???
    <frozen importlib._bootstrap>:677: in _load_unlocked
        ???
    XXX\Anaconda3\lib\site-packages\_pytest\assertion\rewrite.py:142: in exec_module
        exec(co, module.__dict__)
    test_01.py:1: in <module>
        import testlib
    E     File "<fstring>", line 1
    E       (fromlist=)
    E                ^
    E   SyntaxError: invalid syntax

    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 22, 2020 by andrea.sterbini (172,780 points)
    edited Oct 22, 2020 by andrea.sterbini
    Su Linux (mio laptop e VM) non lo fa. Provo a vedere se lo fa in Winzozz.
    O
    Oakandrew (6400 points)
    4 26 63
    commented Oct 22, 2020 by Oakandrew (6,400 points)
    Si, su Windows mi da questo errore di sintassi
    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 23, 2020 by andrea.sterbini (172,780 points)

    Ho disinstallato Anaconda su Windows, scaricato la versione 2020.07 e reinstallato ed ora non mi da lo stesso errore.

    Altrimenti puoi editare il file testlib.py e cambiare la riga  

    print(f"Importing {name} (globals, locals, {fromlist=}, {level=}) (not allowed)")
    

    e togliere gli = in modo che diventi

    print(f"Importing {name} (globals, locals, {fromlist}, {level}) (not allowed)")
    
    Afelium (770 points)
    3 12 18
    answered Oct 23, 2020 by Afelium (770 points)

    Ho incontrato un piccolo intoppo, condivido la mia soluzione (per quanto semplice) per risparmiare un briciolo di tempo a chi stesse facendo troubleshooting: all'inizio tutti i test fallivano e mi davano errore perchè essi fanno riferimento a "program01.py". Se come me avete iniziato a lavorare su uno dei due file di nome" program01.ita.py" e "program01.eng.py", ricordate di rinominarli in "program01.py" prima del testing

    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 23, 2020 by andrea.sterbini (172,780 points)
    • Posizionatevi nella directory HW2req creata unzippando l'archivio ed rinominate il file program01.ita/eng.py che preferite con il nome program01.py
    Marco Freddi (1420 points)
    1 2 16
    answered Oct 23, 2020 by Marco Freddi (1,420 points)
    Sto cercando di scrivere lo pseudo-codice ma, non avendolo mai fatto, non so bene come dovrei realizzarlo, volevo sapere se devo riprodurre riga per riga (cambiando espressioni in modo che non sia esattamente codice), devo cercare di riassumere quello che ho fatto (con o senza indentazione) o altro?
    Se è possibile avere anche degli esempi (di altri algoritmi ovviamente), sarebbe utile.
    Grazie in anticipo.
    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 23, 2020 by andrea.sterbini (172,780 points)
    Non convertire il codice in descrizione, sarebbe come passare il programma agli altri.

    Descrivi il ragionamento e il meccanismo che hai inventato
    c
    c.giannobile (660 points)
    0 2 6
    answered Oct 25, 2020 by c.giannobile (660 points)
    Salve Professore,

    sono uno studente in teledidattica iscritto da una settimana circa al corso di Informatica, vorrei sapere quali sono le prime video lezioni da dover vedere per poter apprendere le nozioni necessarie allo svolgimento del primo HW obbligatorio.

    Sono per ora riuscito a seguire solo le prime 3 lezioni, anche se essendo già un programmatore esperto vado abbastanza spedito.

    Grazie mille.
    g
    giacomo_venturini (6680 points)
    2 5 39
    commented Oct 25, 2020 by giacomo_venturini (6,680 points)
    con le prime 6-7 dovresti avere tutto il necessario
    c
    c.giannobile (660 points)
    0 2 6
    commented Oct 25, 2020 by c.giannobile (660 points)
    Grazie mille
    R
    Raffaele (3850 points)
    11 24 48
    answered Oct 29, 2020 by Raffaele (3,850 points)
    Salve Professore, mi chiedevo se nel file algoritmo.txt fosse possibile scrivere una stringa di codice di 10 caratteri. Più che altro per facilitare la comprensione di ciò che ho fatto a chi ha poca esperienza di programmazione.

    Grazie in anticipo.
    R
    Rinaldi.Pasquale (470 points)
    0 0 2
    answered Oct 29, 2020 by Rinaldi.Pasquale (470 points)
    Salve, ho un problema con la consegna dell'homework.

    quando inserisco il file program01.py e algoritmo.txt mi ritorna rispettivamente "UTF-8 encoding mismatch" e "You must deliver the the pseudo-code before the source file".

    Cosa posso fare?

    grazie anticipatamente
    R
    Rinaldi.Pasquale (470 points)
    0 0 2
    commented Oct 29, 2020 by Rinaldi.Pasquale (470 points)
    Come non detto, ci sono arrivato da solo. Era perchè avevo fatto il text con Notepad
    andrea.sterbini (172780 points)
    513 935 1789
    commented Oct 30, 2020 by andrea.sterbini (172,780 points)
    Notepad? Disinstalla direttamente Windows
    f
    francescomanzi (300 points)
    0 0 2
    answered Nov 2, 2020 by francescomanzi (300 points)
    Salve professore, voleve sapere un chiarimento sulla fase di peer-assessment. Una volta votato e consigliato gli pseudo-code ricevuti, bisogna aspettare la fine del 3 Novembre per votare i consigli sul mio algoritmo, per poi consegnare il program01 entro la fine del 5 Novembre?
    andrea.sterbini (172780 points)
    513 935 1789
    commented Nov 2, 2020 by andrea.sterbini (172,780 points)
    Esatto. Se però ti arrivano tutti e 3 i suggerimenti prima credo che tu possa valutare i suggerimenti prima