Il 04/02/2018 16:18, Marco Beri ha scritto:
2018-02-04 16:01 GMT+01:00 Carpediem <i.carped...@tiscali.it
<mailto:i.carped...@tiscali.it>>:
Un ringraziamento per Daniele e tutta la mia disponibilità a
seguire il consiglio di Marco.
Intanto grazie per avermi fatto notare gli errori che sono stati
evidenziati con i punti interrogativi. Dopodiché, ho continuato
col provare a cercare autonomamente una soluzione. Pensavo di
esserci riuscito ma ancora una volta il risultato non è stato
quello che mi aspettavo anche se apparentemente è meno disastroso
del precedente tentativo: Ho accorciato il codice per facilitarne
la lettura. Il risultato che mi attendevo alla fine del ciclo
for,*_una volta inserito il numero 2 in input_*, era la lista
ritardo_cavalli così composta: [1, 0, 0, 1, 0, 1, 1, 0] invece il
risultato che ottengo è questo:
[1, 0, 1, 0, 1, 0, 0, 1].
Perché? il mio dubbio è che quando chiedo di incrementare il
valore indicato nel rispettivo indice della lista, in realtà, nel
corso del ciclo, viene incrementato l'indice stesso. Non comprendo
l'errore. Il codice si conclude senza segnalazioni ma il risultato
non è quello che volevo. Riuscite a spiegarmi l’errore? Vi
ringrazio. Questo il codice all'osso:
cavallo_0_1 = [0, 1]
cavallo_0_2 = [0, 2]
cavallo_0_3 = [0, 3]
cavallo_1_2 = [1, 2]
cavallo_1_4 = [1, 4]
cavallo_2_3 = [2, 3]
cavallo_2_5 = [2, 5]
cavallo_3_6 = [3, 6]
riepilogo_cavalli = [cavallo_0_1, cavallo_0_2, cavallo_0_3,
cavallo_1_2, cavallo_1_4, cavallo_2_3, cavallo_2_5,
cavallo_3_6,]
ritardo_cavalli = [0, 0, 0, 0, 0, 0, 0, 0]
print()
numero_uscito = int(input("inserisci il numero uscito "))
print()
lunghezza_ritardo_cavalli = len(ritardo_cavalli)
for valore_indice in range(lunghezza_ritardo_cavalli):
if numero_uscito not in riepilogo_cavalli[valore_indice]:
ritardo_cavalli[valore_indice] += 1
else:
ritardo_cavalli[valore_indice] = 0
Il codice fa esattamente quello che gli stai facendo fare.
Tu scorri il contenuto della lista dei cavalli che vale questo:
[[0, 1], [0, 2], [0, 3], [1, 2], [1, 4], [2, 3], [2, 5], [3, 6]]
Inserendo 2 e scorrendo gli 8 elementi di questa lista, incrementi il
corrispondente valore di ritarto_cavalli se il cavallo che stai
controllando non contiene 2.
Degli 8 cavalli, quelli che non hanno il 2 sono il primo (posizione
0), il terzo (2), il quinto (4) e l'ultimo (7).
Quindi è corretto che alla fine ritardo_cavalli valga [1, 0, 1, 0, 1,
0, 0, 1] con incrementati gli elementi 0, 2, 4 e 7 e azzerati gli
altri quattro.
Ciao.
Marco.
In pratica il mio codice è corretto ma mi sono confuso ad immaginare il
risultato che avevo trascritto su un foglio. Confrontando poi la
risposta del codice con quanto da me immaginato e scritto in precedenza
e non trovando corrispondenza, ho perso due giorni a cercare un errore
che non c'era!!!!!!! Non so se essere contento di aver scritto il codice
in modo esatto o disperarmi nel constatare quanto sono stato stupido ad
impantanarmi in questo modo!!! Non ci crederai ma se non mi avessi
aperto gli occhi, sono certo che anche tra una settimana avrei
continuato a valutare un risultato giusto come sbagliato. Grazie infinite.
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python