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

Do you need help?

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

f
francescoferrix (310 points)
1 3 5
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"
400 views

1 Answer

andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
quai esercizi?
f
francescoferrix (310 points)
1 3 5
by (310 points)
Ho risolto Prof, scusi il disturbo.
s
susannacifani (4000 points)
2 21 53
by (4.0k points)
Sto avendo lo stesso problema, come hai risolto?
andrea.sterbini (207920 points)
750 1267 2373
by (208k 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)
2 21 53
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 (207920 points)
750 1267 2373
by (208k 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)
2 21 53
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 (207920 points)
750 1267 2373
by (208k 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)
2 21 53
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 (207920 points)
750 1267 2373
by (208k 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)
2 21 53
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