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 i cicli for e grade01.py

F
FarinaEnrico (280 points)
2 4 6
in Es1 by (280 points)
closed by
Salve io ho questo problema: creando due cicli for uno dentro l'altro ed utilizzando due volte il valore es:alpha (for alpha in lista) e nel secondo ciclo indentato nel primo di nuovo alpha es: (for beta in range(gamma, alpha)) il grade01.py mi genera errore, mentre se dico al programma di stampare semplicemente la lista contenuta nel testo del primo esercizio dell'homework tutto funziona correttamente.

Grazie Enrico.
571 views
closed with the note: consegna passata

2 Answers

francesco.dev (33560 points)
22 51 129
by (33.6k points)
edited by
Ciao Enrico!

Potresti gentilmente spiegare meglio il tuo problema? Facendo anche esempi del codice e della logica adoperata, perché così ho capito che hai usato un ciclo for dentro l'altro ma non ho capito se la sintassi che hai usato è corretta o meno.

Ti prego di entrare nel dettaglio, così da poter capire insieme il problema e risolverlo in tempi brevi.

EDIT:
Usando la seguente sintassi:
for alpha in lista
    for gamma in range(20, alpha)

Fai attenzione!
L'errore di Tipo è perché nel secondo for devi mettere il range che va da (20, len(alpha))
Perché, almeno a livello logico, alpha non è un numero ma una stringa o altro.

Invece, se alpha è un numero l'errore è il seguente:
Col secondo for hai che gamma è un indice delle varie posizioni della struttura che usi, invece nel primo for hai che alpha è un valore che contiene l'elemento di ogni posizione.

Ora, se fai operazioni tra alpha e gamma devi ricordarti che gamma è un indice (NON UN ELEMENTO) quindi dovrai scrivere lista[gamma] per poter prendere l'elemento corrispondente a tale indice.

Aspetto tue notizie,
- Francesco Pio Scognamiglio
F
FarinaEnrico (280 points)
2 4 6
by (280 points)
for alpha in lista
    for gamma in range(20, alpha)

il grade mi dice che esiste un errore di tipo errortype, mentre se faccio un print manuale io tutto funziona.
francesco.dev (33560 points)
22 51 129
by (33.6k points)
edited by
Attenzione!
L'errore di Tipo è perché nel secondo for devi mettere il range che va da (20, len(alpha))
Perché, almeno a livello logico, alpha non è un numero ma una stringa o altro.

Invece, se alpha è un numero l'errore è il seguente:
Col secondo for hai che gamma è un indice delle varie posizioni della struttura che usi, invece nel primo for hai che alpha è un valore che contiene l'elemento di ogni posizione.

Ora, se fai operazioni tra alpha e gamma devi ricordarti che gamma è un indice (NON UN ELEMENTO) quindi dovrai scrivere lista[gamma] per poter prendere l'elemento corrispondente a tale indice.
F
FarinaEnrico (280 points)
2 4 6
by (280 points)
Grazie dovrei aver risolto perchè sono passato da errortype ad out of range...
francesco.dev (33560 points)
22 51 129
by (33.6k points)
Per altri problemi non esitare a scrivere, sono sempre disponibile!
Hai messo len(valore)??
Per non andare out of range devi scrivere len(valore) - 1!

Quindi, nel tuo caso, avrai:
for alpha in lista
    for gamma in range(20, len(alpha) - 1)

Se hai risolto la problematica dell'errortype e dell'out of range grazie a me ricorda di contrassegnare questa risposta come migliore
francesco.dev (33560 points)
22 51 129
by (33.6k points)
Devi stare attento all'indice! Per prima cosa ti consiglio di mettere una stampa dell'indice stesso per verificare fino a che posizione arriva il for!
Visto che sono due for annidati devi mettere una stampa per l'indice interno ed un'altra per l'elemento del for esterno.
LeonardoEmili (35740 points)
14 65 155
by (35.7k points)

Ciao!

Avanzo per ipotesi anch'io non avendo molte informazioni.

  • In questi casi l'errore più frequente è di indentare un for all'interno di un altro for e ciò che capita e che utilizzando magari l'index del secondo for si vada "out of range". In questi casi la cosa migliore da fare innanzitutto è ragionare se veramente ti serve ciclare due volte e in questa maniera, e se veramente ti serve mantenere questa struttura potresti ragionare implementando delle condizioni che evitino che il tuo ciclo generi errori nella lista.
  • Altresì  potresti trovarti nel caso in cui richiedi l'indice o la variabile iterata nel ciclo più interno trovandoti tu però esternamente a esso, questo genererebbe un errore di variabile non definita proprio perché non sei all'interno del suo scope.
Attendiamo tue maggiori info!
.
Leonardo Emili
F
FarinaEnrico (280 points)
2 4 6
by (280 points)
Sono esattamente in out of range
LeonardoEmili (35740 points)
14 65 155
by (35.7k points)
Immaginavo, in tal caso ti ripropongo di ragionare se effettivamente hai bisogno di un for annidato in un altro for. Questo succede perché stai richiedendo a Python di fornirti un elemento, glielo chiedo ovviamente attraverso il suo index in questo caso, purtroppo però non esistono elementi all'altezza di quell'indice, perciò ti viene restituito tale errore!