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

Do you need help?

Notice Board

Problema con il Grade01

r
rosario.salerno (3010 points)
15 30 44
in Es1 by (3.0k points)

Sto avendo problemi con il Grade01 dell'esercizio 01, mi continua a dare errore nonostante il mio modi(ls,k) funzioni, mi ritorna una nuova lista con i primi e modifica la lista iniziale, se su python inserisco ls dopo la funzione mi da come output la lista modificata. Per modificare la lista iniziale ho usato reversed e remove, non ci sono altri return oltre a return listaprimi e non ci sono print.

questo è l'errore:

AssertionError                            Traceback (most recent call last)
<ipython-input-9-7a5c04e84efe> in <module>()
----> 1 g.test_program01_3()

~\Anaconda3\grade01.py in test_program01_3()
      9     orig= [] + lista
     10     ret= program01.modi(lista,6)
---> 11     check(ret,   [293, 113],   orig, 'return')
     12     check(lista, [70,154,128], orig, 'ls')
     13     return 1

~\Anaconda3\testlib.py in check(a, b, params, expl)
     41     if expl:
     42         msg += "\t<- correct %s value" % expl
---> 43     assert a == b,  msg
     44
     45 def check_text_file(a,b):

AssertionError:         when input=[70, 330, 293, 154, 128, 113, 178]
                None != [293, 113]      <- correct return value

edit : la faccina non è compresa nell'errore :D 

530 views

1 Answer

andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
Ma hai messo il return?

Vedo che torni None, quindi potrebbe mancare l'istruzione return.
r
rosario.salerno (3010 points)
15 30 44
by (3.0k points)
edited by
si il return è alla fine della funzione, un semplice return listaprimi allineato con stessa indentazione del primo for.
Forse il problema è dato dall'import? Ho creato un file.py homework con tutte le funzioni che servono per modi(ls,k) e modi(ls,k) stesso e l'ho importato.
Allego uno screen per far vedere che la funzione funziona correttamente, spero che non violi il regolamento visto che non mostra il codice.
https://gyazo.com/e02964814b5262e14118e130a6372b25
Luca T. (5410 points)
3 20 38
by (5.4k points)
Posso chiederti perché questa scelta? È un programma abbastanza semplice, non credo ci fosse bisogno di creare un file esterno da importare. In ogni caso, il grade richiama la funzione sotto forma di program01.modi(ls, k) se non ricordo male e quindi non trova la funzione che invece dovrebbe essere program01.homework2.modi(ls, k) da quel che vedo dallo screen. Prova a fare "from homework2 import *" così puoi omettere "homework2." e scrivere solo modi(ls, k). Spero che l'errore sia questo, in caso non andasse fammi sapere.
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
Visto che la deadline per quell'esercizio è finita da tempo puoi postarne il codice
r
rosario.salerno (3010 points)
15 30 44
by (3.0k points)
edited by
def primo('n):
     if n < 2:
        return False
     for x in range(2,n):
         if n % x == 0:
             return False
     return True
 
def divisoripropri('n):
     new = []
     for x in range(2,n):
      if (n%x == 0):
          new.append(x)
     return len(new)
   
def modi(ls,k):
    primi = []
    divisori = []
    for n in ls:
        if primo('n) == True:
            primi.append('n)
    for n in list(reversed(ls)):
        if divisoripropri('n) != k:
            ls.remove('n)
    return primi

 x Luca : di solito salvo ogni programma su notepad++, in questo caso essendo più di una funzione l'ho importato. Proverò come hai proposto tu comunque.
EDIT:  ho messo un ' prima di ogni n per evitare la faccina.