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

Rispondere a