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.

Problema return es.1

s
s.gobbo1 (200 points)
1 2 5
in Es1 by (200 points)
closed by
Salve! Ho un problema con il ritorno della funzione nell'esercizio 1. Praticamente la funzione che ritorna la lista dei numeri primi risulta corretta con il print , mentre con il return ritorna solo uno dei numeri primi e non tutti. Non riesco a capire dove sia il problema.
693 views
closed with the note: consegna passata

4 Answers

francesco.dev (33560 points)
22 51 129
by (33.6k points)
edited by
Dacci qualche informazione maggiore, ad esempio cosa stampa il print e cosa dà col return (sempre se stampi e restituisci la stessa lista!)
Dicci cosa ti dice il grade01.py quando lo esegui cosicché avremo più informazioni per poterti aiutare.

Infine, almeno per ora, ti consiglio di mettere la print una riga sopra il return, così puoi sapere fin da subito se le liste sono le stesse o se una delle due è stata modificata.
Altro consiglio:
Richiama manualmente la funzione e stampa ciò che restituisce la funzione dal main!

NEWS:
Posso affermare che il print presente subito prima del return stampa l'effettivo contenuto della lista dei numeri primi.
Invece quell'altra print ti stampa unicamente il numero che stai analizzando e penso vivamente che questa print sia collegata ad un ciclo for! Controlla bene il codice e dimmi di come è fatta la print di cui sto parlando.

Nel caso in cui avessi ragione, evidentemente hai sbagliato l'algoritmo per capire se un numero è primo o meno!
Ti ricordo che per capire se un numero n è primo crei un ciclo che inizia da 2 e finisce ad n-1.
Nel ciclo conti quanti numeri riescono a dividere x! Se alla fine il contatore è uguale a 0 allora il numero è primo, altrimenti no.
Quindi, se n%i viene almeno una volta 0, allora non è primo!

Fai tutte queste verifiche e fammi sapere!
Se ho risolto il tuo problema scegli la mia risposta come migliore!

Sperando di esserti stato utile,
Buona giornata!
- Francesco Pio Scognamiglio
s
s.gobbo1 (200 points)
1 2 5
by (200 points)
Allora il grade non l'ho lanciato per il momento perche devo ancora sviluppare la seconda parte dell'esercizio, ovvero quella in cui bisogna modificare la lista di partenza. Per il momento ho sviluppato la prima parte, ovvero quella in cui bisogna creare una nuova lista di soli numeri primi e sto provando a lanciarla manualmente, ma appunto verifico questo problema: con il return mi restituisce una lista contenente un solo numero primo; con il print mi stampa tutti i numeri primi, ma contenuti ognuno in una lista diversa. Le quali liste sono una sotto l'altra, quindi incolonnate.
Provando, come mi hai consigliato, a mettere il print sopra la riga del return mi stampa una lista con un solo numero primo e subito sotto mi restituisce la stessa lista con lo stesso numero primo.
francesco.dev (33560 points)
22 51 129
by (33.6k points)
Allora, così ad occhio posso affermare che il print presente subito prima del return stampa l'effettivo contenuto della lista dei numeri primi.
Invece quell'altra print ti stampa unicamente il numero che stai analizzando e penso vivamente che questa print sia collegata ad un ciclo for! Controlla bene il codice e dimmi di come è fatta la print di cui sto parlando.

Nel caso in cui avessi ragione, evidentemente hai sbagliato l'algoritmo per capire se un numero è primo o meno!
Ti ricordo che per capire se un numero n è primo crei un ciclo che inizia da 2 e finisce ad n-1.
Nel ciclo conti quanti numeri riescono a dividere x! Se alla fine il contatore è uguale a 0 allora il numero è primo, altrimenti no.
Quindi, se n%i viene almeno una volta 0, allora non è primo!

Fai tutte queste verifiche e fammi sapere!
Se ho risolto il tuo problema scegli la mia risposta come migliore!
Denis (2230 points)
4 13 23
by (2.2k points)
Ciao,
Con che struttura dati stai lavorando? Una lista?

Il print l'hai messo subito prima del return(e hai controllato che sia l'unico presente nel tuo codice)?

Come inserisci il dato e come hai fatto a verificare il return?(soprattutto mi interessa, hai verifico il return o hai lanciato il grade?)
split (8700 points)
21 59 79
by (8.7k points)
è probabile che quando crei la lista la crei "male".. prova a creare una lista vuota e poi quando trovi un numero primo "appendilo" alla lista vuota col metodo list.append(elementodaappendere). poi return lista o print lista dovrebbero darti lo stesso risultato
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
Attento alla indentazione del return