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 catalogo_film e simili

A
AlessandroPecchini (780 points)
2 5 12
in Es3 by (780 points)
Sono giorni che ci sbatto la testa, ma non riesco a lavorare con le varie classi senza utilizzare i vari cataloghi di registi attori e film creati con le prime due funzioni.

So che definire una funzione e richiamarla sono due cose diverse, ma nelle classi come posso richiamare le prime due funzioni avendo come argomento solo il dizionario relativo ad un solo attore o film e non tutto il json?
Ho provato a lavorare con catalogo_film, catalogo_registi ecc.. dando per scontato che vle funzioni venissero richiamate dai test, ma sono pieno di errori che mi dicono che questi nomi non esistono.

Grazie in anticipo per le risposte
280 views

2 Answers

a.capobianco1 (16770 points)
14 54 165
by (16.8k points)

In questo esercizio non vedi esplicitamente le chiamate ai metodi delle classi o alle due funzioni esterne, ma devi solo organizzarle affinché rispondano correttamente alle richieste fatte nei Test.

Per controllare il funzionamento delle Classi io ho utilizzato molto l'aria di testing in fondo al file py dell'esercizio.. mi riferisco a:

if __name__ == '__main__': 

 Se ad esempio volevo verificare il funzionamento del metodo films() richiamato dalla classe attori procedevo in questo modo (nell'area di testing):

  1. richiamo esplicitamente le due funzioni esterne e ne scarico il contenuto in variabili (cataloghi)
  2. Accedo al metodo films() del catalogo degli attori specificando nella chiave del catalogo, il nome dell'attore che voglio verificare (magari uno letto dal Test). Ti ricordo che se hai organizzato tutto per bene nelle funzioni esterne riuscirai ad accedere al metodo semplicemente scrivendo qualcosa tipo: Catalogo[chiave].metodo() … nel metodo io mettevo una serie di print che mi facevano da debug..
A
AlessandroPecchini (780 points)
2 5 12
by (780 points)
Proverò ad usare quella parte come area di test ma comunque non mi torna molto. Io credo di aver implementato correttamente le funzioni ma gli errori dicono che non esistono catalogo_registi e catalogo_film, come se dovessi richiamare io la funzione e creare queste due variabili.
Grazie comunque
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
La seconda funzione restituisce una tupla i cui elementi sono i due cataloghi che non vengono rilevanti. Prova a fare l'unpaking della funzione all'interno dell'area di testing e vedi se riesci ad accedere ai cataloghi e quindi ai volori oggetto con relativi metodi.
A, b = funz2(parametri) vedi cosa riesci a fare con a e b
Xriuk (13590 points)
8 24 116
by (13.6k points)
Nelle classi non devi richiamare le due funzioni. Testale in fondo a tutto il codice, le richiami in ordine, e poi crei le classa di prova. Se ouoi postare il log degli errori possiamo aiutarti meglio.
A
AlessandroPecchini (780 points)
2 5 12
by (780 points)
Okay, (mi riferisco anche a @a.capobianco1) grazie ora provo a fare dei test ed a mandare gli errori che mi dà
A
AlessandroPecchini (780 points)
2 5 12
by (780 points)

le funzioni singolarmente funzionano bene, l'errore che mi da il test in alcuni casi è questo:

ERROR: test_31_Regista_films_1___Michelangelo_Antonioni_____L_eclisse____La_notte____Professione__reporter____Blowup____Il_deserto_rosso____Zabriskie_Point____L_avventura___ (__main__.Test)
Built-in mutable sequence.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\Alessandro\Anaconda3\lib\site-packages\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:/Users/Alessandro/Documents/Università/Fondamenti di programmazione/Programmazione/homework03/test_03.py", line 471, in test_31_Regista_films
    films = regista.films()
  File "D:\Users\Alessandro\Documents\Università\Fondamenti di programmazione\Programmazione\homework03\program03.py", line 543, in films
    for f in catalogo_film:
NameError: name 'catalogo_film' is not defined

o comunque errori simili nonostante le funzioni vanno bene