Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 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 2021-22 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.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

"Reloaded module: albero" negli esercizi ricorsivi dell'eserciziario Pyhton

f
francescoferrix (310 points)
1 3 4
in Eserciziario d'esame by (310 points)
Salve, ho provato a svolgere degli esercizi ricorsivi ma quando provo a fare i test sul mio codice mi dice che sono falliti e mi da il seguente errore "Reloaded modules: albero"
176 views

1 Answer

andrea.sterbini (173640 points)
516 941 1795
by (174k points)
quai esercizi?
f
francescoferrix (310 points)
1 3 4
by (310 points)
Ho risolto Prof, scusi il disturbo.
s
susannacifani (4000 points)
1 19 51
by (4.0k points)
Sto avendo lo stesso problema, come hai risolto?
andrea.sterbini (173640 points)
516 941 1795
by (174k points)
se mi fate sapere di che esercizio si tratta posso darci un'occhiata (e magari se mi mandi il tuo codice)
s
susannacifani (4000 points)
1 19 51
by (4.0k points)
A me personalmente succede con tutti gli esercizi che all'inizio abbiano "import albero", anche provando ad eseguire direttamente le soluzioni ho questo problema. Ho salvato albero.py all'interno della stessa cartella in cui lavoro ma sembra non funzionare (ovviamente mi sono posizionata nella stessa cartella anche da Spyder), probabilmente sto dimenticando qualche passaggio importante ma non riesco a venirne a capo. Ad esempio quando lavoro sugli esercizi riguardanti le immagini non ho questo problema (ed anche lì faccio un import, ossia "import immagini"), eppure faccio gli stessi passaggi
andrea.sterbini (173640 points)
516 941 1795
by (174k points)
Strano, il file albero.py è accluso nella directory zippata che contiene il program.py ed i test.

Hai dato un'occhiata alla soluzione acclusa nello zip?
s
susannacifani (4000 points)
1 19 51
by (4.0k points)
Infatti, forse ho dimenticato di fare qualche passaggio prima (che magari ho già fatto per "import immagini")?

Sì, ho guardato le soluzioni ma anche quelle sembrano non funzionare per questo problema di albero.py. Ad ogni modo aprendo i test sono riuscita a modificare le liste date in input (quindi gli alberi) attraverso la funzione fromList all'interno di albero.py (eseguendolo da Spyder), salvando quindi l'albero tra le variabili: il problema è che posso farlo solo da console e di conseguenza quando scrivo il mio programma, riesco ad eseguire le varie funzioni solo da console (per cui ho solo il risultato, senza avere la possibilità di debuggare o altro).

All'esame dovrebbe funzionare tutto senza problemi o avrò questo problema senza la possibilità di debuggare? In caso cercherò di risolvere
andrea.sterbini (173640 points)
516 941 1795
by (174k points)
Mi mandi il tuo codice e una descrizione di come fai i test?

All'esame usiamo un grader più semplice (vedi esami passati) e mettendo un breakpoint è possibile fermare l'esecuzione all'inizio della tua funzione e debuggarla
s
susannacifani (4000 points)
1 19 51
by (4.0k points)

Le lascio la soluzione dell'esercizio 7:

import albero

def es7(tree, insieme, k, valore = 0):
    if tree.f == []:
        return valore
    cont = 0
    print(list(tree.f))
    for num in tree.f:
        valore = es7(num, insieme, k, valore)
        print(valore)
        if num.id in insieme:
            # print(num.id)
            cont += 1
    if cont == k:
        return valore+1
    else:
        return valore

Quando eseguo i test (direttamente da Spyder) li passa tutti, ma per poter vedere il risultato (o eseguire il programma) faccio questi passaggi:

1) apro albero.py e lo eseguo, poi sulla console inserisco (in questo caso) a = fromLista([5, [[20, [[11, []]]], [4, [[10, []], [2, [[3, []], [1, []]]], [9, []], [8, []],[7, []]]],[6, []]]]) per realizzare appunto la struttura dell'albero su cui poter poi eseguire il mio programma (la lista la prendo dai test)

2) a questo punto eseguo il programma e poi nella console inserisco es7(a, {1,2,3,5,9}, 2) e in questo modo mi esegue la funzione (avendo inserito delle print ovviamente riesco a vedere un po' l'andamento del programma)

Ovviamente in questo modo non posso fare il debug e ogni volta che eseguo il codice devo inserire quei dati da console.

La ringrazio

andrea.sterbini (173640 points)
516 941 1795
by (174k points)
edited by

Prova, in console, a fare

import albero, program
a = albero.fromLista([5, [[20, [[11, []]]], [4, [[10, []], [2, [[3, []], [1, []]]], [9, []], [8, []],[7, []]]],[6, []]]])
program.es7(a, {1,2,3,5,9}, 2)

Per debuggare,invece, inserisci in program.py dopo la definizione di es7 le due righe

a = albero.fromLista([5, [[20, [[11, []]]], [4, [[10, []], [2, [[3, []], [1, []]]], [9, []], [8, []],[7, []]]],[6, []]]])
es7(a, {1,2,3,5,9}, 2)

e inserisci un breakpoint sulla chiamata di es7

s
susannacifani (4000 points)
1 19 51
by (4.0k points)
La ringrazio, ora funziona tutto perfettamente ed anche all'interno di program.py non mi segnala più "import albero" con un warning.

Ora riesco anche a debuggare il programma riga per riga, la ringrazio ancora per l'aiuto