[Python] Problema irrisolto e richiesta di aiuto
Marco Beri
marcoberi a gmail.com
Dom 4 Feb 2018 16:18:10 CET
2018-02-04 16:01 GMT+01:00 Carpediem <i.carpediem a 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.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20180204/3e3a85af/attachment.html>
Maggiori informazioni sulla lista
Python