[Python] Problema irrisolto e richiesta di aiuto

Carpediem i.carpediem a tiscali.it
Dom 4 Feb 2018 16:01:17 CET


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 04/02/2018 09:28, Daniele Zambelli ha scritto:
> Il 4 febbraio 2018 01:04, Carpediem <i.carpediem a tiscali.it> ha scritto:
>> Buongiorno a tutti. Mi trovo a combattere con una parte di codice che, se
>> [...]
> Ammetto di non avere avuto la pazienza di analizzare tutto il tuo codice.
>
> Vorrei riprendere il consiglio di Marco con un'indicazione pratica.
> Ogni riga in meno del programma è una riga in meno in cui si può
> trovare un errore. In generale, è più veloce leggere e capire un
> programma di 10 righe che uno di duecento...
>
> Tenendo presente il principio: (Di solito) breve è meglio che lungo,
> potresti incominciare semplificando l'inizio del programma.
>
> Invece che :
>
>> from time import *
>> numeri_in_gioco = tuple(range(0,37))
>> #Ora le puntate le cui vincite sono pagate diciassette volte la posta
>> cavallo_0_1 = [0,1]
>> cavallo_0_2 = [0,2]
>> cavallo_0_3 = [0,3]
> ...
>> cavallo_27_30 = [27_30]   # ???
>> cavallo_28_29 = [28,29]
>> cavallo_28_31 = [28,31]
> ...
>> cavallo_33_36 = [33_36]  # ???
>> cavallo_34_35 = [34,35]
>> cavallo_35_36 = [35,36]
>> riepilogo_cavalli = [cavallo_0_1, cavallo_0_2, cavallo_0_3, cavallo_1_2,
> ...
>>                       cavallo_34_35, cavallo_35_36]
> Potresti scrivere semplicemente:
>
> riepilogo_cavalli = [[0,1], [0,2], [0,3],
> ...
>                       [34,35], [35,36]]
>
> Così magari eviti errori strani come quelli che ho segnato con dei
> punti di domanda che suppongo siano degli errori.
>
> Ciao
>

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


Maggiori informazioni sulla lista Python