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.

Utilizzo di moduli standard

r
rosario.salerno (3010 points)
15 30 44
in Funzionamento degli homework by (3.0k points)
edited by
Salve a tutti, vorrei fare una domanda generale sullo svolgimento degli homeworks : come vi comportate sull'utilizzo della libreria standard per lo svolgimento degli homeworks? Seguendo gli esercizi a fine lezione ho sempre cercato di svolgerli senza importare, anche per capire bene come funziona, ma ho visto che molti homeworks sarebbero di più facile risoluzione utilizzando i vari moduli contenuti nella libreria standard. Ovviamente suppongo che moduli esterni scaricati dal web siano vietati a meno che non proposti direttamente dai professori.
396 views
closed

2 Answers

Best answer
by (9.9k points)
selected by

Ciao, io mi comporto in base alle direttive del professore. Egli infatti può vietare o meno l'utilizzo di una libreria (anche standard), in caso di esercizi particolari.

Comunque io vado alla ricerca di una libreria standard appena il problema richiede tanti controlli ed iterazioni. Per esempio nei primi homework ho usato la libreria re, che permette l'uso delle espressioni regolari, un potente strumento per manipolare il testo. Questo mi ha permesso di non usare nessun if/for/while nei primi esercizi, anche se il programma era un po' più lento, a causa del "motore" regex (queste espressioni vanno analizzate, interpretare e poi eseguite, è un lavoro abbastanza complesso).

Un esempio opposto è l'ultimo esercizio del terzo homework: dato che non si poteva usare BeautifulSoup4, ho creato un codice un po' elaborato per gestire i selettori CSS. In questo caso non ho utilizzato alcuna libreria standard.

In generale la regola fondamentale è: prima di scrivere qualsiasi codice controlla se è presente un modulo nella libreria standard e valuta se utilizzarlo (confrontando la velocità oppure ciò che vuoi e cosa offre il modulo). Nel "mondo reale" devi anche valutare l'eventuale presenza di moduli di terze parti, ossia non standard, ed anche qui devi decidere se utilizzare o meno questi moduli (meno dipendenze hai e più il tuo programma potrà "sopravvivere").

Edit: ovviamente se stai imparando un linguaggio oppure certi algoritmi oltre ad utilizzare i moduli ti conviene capire come sono fatti e capire cosa c'è dietro il modulo (spesso implementare una versione tua di un modulo ti permette di imparare tante cose).

LeonardoEmili (35740 points)
14 65 155
by (35.7k points)

Buongiorno!

Come te, anch'io cerco sempre di svolgere gli HW senza importare alcun modulo al di fuori di quelli fornitoci dal professore e questo principalmente per due motivi:

  1. volendo confrontare le varie strutture dati "stock" di Python con altre ho notato che spesso gli strumenti built-in di Python risultavano essere più efficenti. Il discorso è che esistono strumenti che ci facilitano determinate operazioni o più in generale la programmazione, tuttavia è possibile che tali metodi per svolgere quell'operazione in realtà ne svolgono anche altre. Dunque io credo che se possibile è sempre meglio utilizzare gli strumenti classici in quanto più "precisi" e veloci.
  2. il secondo motivo è banale quanto fondamentale, ovvero: non ci è permesso utilizzare moduli esterni non inclusi già in Anaconda per risolvere gli HW, inoltre non ci è permesso utilizzare moduli che ci evitano di svolgere quel particolare compito (vedi la ricorsione con BF4 nell'HW precedente).

Ti auguro una buona giornata!

Leonardo Emili