Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Calcolare la complessità ciclomatica (Intricatezza) e il Tempo di Esecuzione

Auron (15880 points)
50 126 194
in Funzionamento degli homework by (15.9k points)
recategorized by
Pongo direttamente una domanda, che è più visibile al mondo intero rispetto ad un commento...
Come posso calcolare la votazione (da A ad F) relativa all'intricatezza del codice e il Tempo di Esecuzione esatto?
E' stata nominata una certa utility Radon (per l'intricatezza, non so se valga anche per il tempo), ma come si usa?

Lo chiedo così possiamo verificare in ogni momento la bontà del nostro codice :D
1.8k views
closed with the note: answered

1 Answer

Best answer
edoardo (7090 points)
19 52 67
by (7.1k points)
selected by

Ciao! Io l'ho fatto ieri sera, ti basterà installare il pacchetto radon e da cmd eseguire radon cc -a -s ./program01.py

https://pypi.python.org/pypi/radon qui trovi il pacchetto radon e come installarlo!

Riceverai lo stesso output che vedi nel visualize. 

Per il tempo di esecuzione devi importare timeit dalla console python ed eseguire

python3 -m timeit -n 10 -r 1 -s 'import grade01' 'grade01.runtests(grade01.tests)'

Ora ti ho copiato i test sul program01 e grade01, ovviamente basta modificare 01 in 02 per provare il secondo. Se dovessi avere problemi nel secondo comando, anziché usare ' usa " per import e run tests 

Auron (15880 points)
50 126 194
by (15.9k points)
Scusami, devo ancora prendere un po' di dimestichezza su questo lato... Ho scaricato il pacchetto da 3Mb, ho ovviamente un file .zip con all'interno diverse cartelle e alcuni file... In quale cartella devo metterli e come?
edoardo (7090 points)
19 52 67
by (7.1k points)
Allora non devi spostarli! Fai così: da cmd digita cd %path della tua cartella scaricata%, quando sei dentro digita python setup.py install e farà tutto da solo!

P.s: ho dato per scontato che hai unzippato il file .zip in qualche cartella!
Auron (15880 points)
50 126 194
by (15.9k points)
Ok, allora... So che sembro un idiota, ma non posso far altro che chiedere... Credo di aver installato correttamente Radon perchè, una volta eseguito python setup.py install non mi ha restituito nessun errore... cioè, non mi è comparso niente a video, ma immagino debba andare così, sbaglio?
Ora, ho aperto la console di python, ma quando provo a scrivere i comandi che tu mi hai fornito mi esce questo per l'intricatezza:
(Prompt Python)
                     >>> radon cc -a -s ./program01.py
                             File "<stdin>", line 1
                             radon cc -a -s ./program01.py
(Cmd)
                             "radon" non è riconosciuto come comando interno o esterno,
                             un programma eseguibile o un file batch.

E questo per il tempo:
(Prompt Python)
                              >>> import timeit
                              >>> python3 -m timeit -n 10 -r 1 -s 'import grade01' 'grade01.runtests(grade01.tests)'
                                      File "<stdin>", line 1
                                      python3 -m timeit -n 10 -r 1 -s 'import grade01' 'grade01.runtests(grade01.tests)'

... riesci a salvarmi?
Auron (15880 points)
50 126 194
by (15.9k points)
Ok, aggiorno... ho avuto la conferma di aver installato Radon, stavolta a video mi sono apparse varie voci di completamento, quindi ok... Non capisco da dentro quale cartella (in cmd) devo lanciare i comandi...
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
Esatto, la riga di comando che uso la trovate nel log che vi appare sotto il vostro codice nella schermata di visualizzazione.
Nota: se avete sia python2 che python3 i due moduli (radon e timeit) vanno installati in python3
Auron (15880 points)
50 126 194
by (15.9k points)
E devo lanciarle da cmd, o prompt python? E da dentro quale cartella? Perchè continua a darmi gli errori di cui sopra... T.T
edoardo (7090 points)
19 52 67
by (7.1k points)
Auron, ciao! Scusami ma sono appena tornato a casa e posso risponderti, finalmente, in maniera adeguata! Allora ti spiego rapidamente in pochissimi passaggi come fare. Apri una finestra col prompt di comandi. I miei file dell'homework, ad esempio, si trovano in questa cartella: C:\Users\Edoardo\Desktop\python\homework01 . Nel prompt digito cd C:\Users\Edoardo\Desktop\python\homework01 così mi ritrovo all'interno di quella cartella. Successivamente digito il comando radon cc -a -s ./program01.py e ho il mio output!

Spero ti sia chiaro adesso!
P.s: per il timeit stessa cosa, cambi solamente il comando! Fammi sapere se riesci!!
Auron (15880 points)
50 126 194
by (15.9k points)
E' assurdo, ho fatto come hai detto ma continua a dirmi che:

"radon" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
edoardo (7090 points)
19 52 67
by (7.1k points)
Mh, sembra che tu non abbia installato radon! Crea una cartella nel desktop, estraici il contenuto di questo zip https://pypi.python.org/packages/d1/46/2ecea4d34bdf48d108cd8d933e634ddd51c17e5dec15e76db1bd64f3e9c9/radon-2.1.1.tar.gz#md5=5a2fa8bbd5cdbdd16453a6d056cc112e e con una finestra del prompt spostati, col comando cd, in quella cartella. Successivamente digita python setup.py install . In questo modo dovrebbe partirti una cosa come "running install" (non ricordo esattamente), e vedrai che "scarica" tanti pacchetti e che crea nuove cartelle all'interno di quella dove stai eseguendo il codice! Poi attento: NON eliminare la cartella in cui esegui l'installazione!
Auron (15880 points)
50 126 194
by (15.9k points)
Mi sento piuttosto stupido sai? Ma questo è quello che mi restituisce... Puoi verificare anche tu che la cartella è quella estratta dall'archivio... e i file ci sono tutti all'interno...

C:\Users\Asus\Desktop\Radon\radon-2.1.1> python setup.py install
"python" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch
edoardo (7090 points)
19 52 67
by (7.1k points)
Mh, prova python3 al posto di python, oppure guarda questa domanda: http://q2a.di.uniroma1.it/294/problemi-con-lanaconda-prompt dal "Per risolvere il tuo problema, comunque segui questi passi:" in poi. Probabilmente il problema è che non hai python tra le variabili d'ambiente
Auron (15880 points)
50 126 194
by (15.9k points)
Però... sei bravo forte :D
Ok, l'ho installato, o perlomeno queste sono le righe finali del processo di spacchettamento:

Using c:\users\asus\anaconda3\lib\site-packages
Finished processing dependencies for radon==2.1.1

Resta ancora questo però...

C:\Scuola\Università\Informatica\Materie\Fondamenti di Programmazione\Programmi\homework01>radon cc -a -s ./program01.py
"radon" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.

Scusami, lo so che probabilmente ti sto snervando, ma non riesco davvero a capire quale diavolo sia il problema...
edoardo (7090 points)
19 52 67
by (7.1k points)
Ahahaha, nono non mi snervi affatto, anzi mi diverto ad aiutarti :D
Devi aggiungere semplicemente la cartella scripts di anaconda alle variabili d'ambiente! Da me, ad esempio, era questa: C:\Users\Edoardo\Anaconda3\Scripts (https://i.gyazo.com/80714794f76efb6af58b6683741f86aa.png queste sono le mie variabili d'ambiente)
Auron (15880 points)
50 126 194
by (15.9k points)
OOOOOOOOOOOOOKKKKKKKK!!!!!!!!!!!! ANDATAAAAAAAAAAAAAAAAAA!!!!!!!!!!!!!! (Per la complessità :P)
Discorso Tempo di Esecuzione invece? Probabilmente sbaglio il comando:

C:\Scuola\Università\Informatica\Materie\Fondamenti di Programmazione\Programmi\homework01>python3 -m timeit -n 10 -r 1 -s 'import grade01' 'grade01.runtests(grade01.tests)'

"python3" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
edoardo (7090 points)
19 52 67
by (7.1k points)
python3 != python quindi metti python! Se non dovesse andare (tipo qualche errore sul timeit che non hai o roba simile) fai così:
digita python poi -> import timeit e infine ->  exit() e rifai quel codice python -m timeit -n 10 -r 1 -s 'import grade01' 'grade01.runtests(grade01.tests)'

Ahhh, se ti dà un problema tipo "EOL" scrivi così:  python -m timeit -n 10 -r 1 -s "import grade01" "grade01.runtests(grade01.tests)"

windows è maledetto >:(
Auron (15880 points)
50 126 194
by (15.9k points)
MA SEI UN DIO!
Potrei ringraziarti per vite intere, ma la mia suddetta affermazione dovrebbe rendere l'idea :P
edoardo (7090 points)
19 52 67
by (7.1k points)
Ahahahah, non esageriamo!
Auron (15880 points)
50 126 194
by (15.9k points)
Grazie mille davvero, per aver risolto il problema certo, ma soprattutto per la tua immensa disponibilità :)
Se tutti aiutassero come hai fatto tu con me, questo sarebbe certamente un mondo migliore!
Ci vediamo sul Forum xD
edoardo (7090 points)
19 52 67
by (7.1k points)
felice d'averti aiutato :-)