[Python] Problema irrisolto e richiesta di aiuto

Carpediem i.carpediem a tiscali.it
Dom 4 Feb 2018 17:06:56 CET



Il 04/02/2018 16:18, Marco Beri ha scritto:
> 2018-02-04 16:01 GMT+01:00 Carpediem <i.carpediem a tiscali.it 
> <mailto: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.
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 a lists.python.it
> https://lists.python.it/mailman/listinfo/python

-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20180204/1fd59596/attachment.html>


Maggiori informazioni sulla lista Python