[Python] Problema irrisolto e richiesta di aiuto

Carpediem i.carpediem a tiscali.it
Dom 4 Feb 2018 01:04:02 CET


Buongiorno a tutti. Mi trovo a combattere con una parte di codice che, 
se eseguito, giunge alla fine senza rilevare errori ma che non mi 
restituisce il risultato da me atteso. A fine esecuzione, mi ritrovo con 
una lista così composta:

 >>> ritardo_cavalli
[None, None, None, None, None, None, None, None, None, None, None, None, 
None, None, None, None, None, None, None, None, None, None, None, None, 
None, None, None, None, None, None, None, None, None, None, None, None, 
None, None, None, None, None, None, None, None, None, None, None, None, 
None, None, None, None, None, None, None, None, None, None, None, None, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Il problema:

1) in questa lista in cui inizialmente erano presenti tutti i soli 
numeri zero, a fine esecuzione mi ritrovo la stessa lista incrementata 
da tutta una serie di None che non voglio ci siano (e non so perchè 
compaiono)

2) A fine esecuzione, la mia aspettativa era di trovarmi il valore di 
alcuni dei numeri zero presenti incrementato di 1 (a seconda del numero 
che viene richiesto in Input) e invece la situazione è quella sopra 
riportata.

3) Sono quasi certo di aver identificato l'errore nelle seguenti linee 
di codice:

lunghezza_ritardo_cavalli = len(ritardo_cavalli) #Conta gli elementi 
della lista ritardo_cavalli
                         for posizione in 
range(lunghezza_ritardo_cavalli): # stabilisce che il ciclo for giri 
tante volte quanto lunga è la lista ritardo_cavalli
                             valore = ritardo_cavalli[posizione] 
#Attribuisce a valore lo stesso numero che è nella posizione 
corrispondente alla lista ritardo_cavalli
                             if numero_uscito not in 
riepilogo_cavalli[posizione]: #Se il numero uscito non è presente nella 
posizione esaminata di riepilogo_cavalli:
                                 ritardo_cavalli[posizione] = 
ritardo_cavalli.insert(posizione,valore + 1) #il valore corrispondente 
alla posizione di ritardo_cavalli aumenta di 1
....
ma nonostante due interi pomeriggi trascorsi nel tentativo di ottenere 
quanto voluto, alla fine mi sono arreso sperando di trovare qui qualcuno 
che abbia la pazienza, la sicura capacità e la da me sperata volontà di 
darmi una mano. Perdonatemi ma in pratica sto studiando python da 
neanche un mese e forse mi sono spinto oltre i limiti di quelle che sono 
le mie reali conoscenze assimilate. Se riusciste a farmi avere una 
descrizione dell'errore e della soluzione, ve ne sarei molto grato.
Grazie in ogni caso.
A seguire, il codice:

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_1_2 = [1,2]
cavallo_1_4 = [1,4]
cavallo_2_3 = [2,3]
cavallo_2_5 = [2,5]
cavallo_3_6 = [3,6]
cavallo_4_5 = [4,5]
cavallo_4_7 = [4,7]
cavallo_5_6 = [5,6]
cavallo_5_8 = [5,8]
cavallo_6_9 = [6,9]
cavallo_7_8 = [7,8]
cavallo_7_10 = [7,10]
cavallo_8_9 = [8,9]
cavallo_8_11 = [8,11]
cavallo_9_12 = [9,12]
cavallo_10_11 = [10,11]
cavallo_10_13 = [10,13]
cavallo_11_12 = [11,12]
cavallo_11_14 = [11,14]
cavallo_12_15 = [12,15]
cavallo_13_14 = [13,14]
cavallo_13_16 = [13,16]
cavallo_14_15 = [14,15]
cavallo_14_17 = [14,17]
cavallo_15_18 = [15,18]
cavallo_16_17 = [16,17]
cavallo_16_19 = [16,19]
cavallo_17_18 = [17,18]
cavallo_17_20 = [17,20]
cavallo_18_21 = [18,21]
cavallo_19_20 = [19,20]
cavallo_19_22 = [19,22]
cavallo_20_21 = [20,21]
cavallo_20_23 = [20,23]
cavallo_21_24 = [21,24]
cavallo_22_23 = [22,23]
cavallo_22_25 = [22,25]
cavallo_23_24 = [23,24]
cavallo_23_26 = [23,26]
cavallo_24_27 = [24,27]
cavallo_25_26 = [25,26]
cavallo_25_28 = [25,28]
cavallo_26_27 = [26,27]
cavallo_26_29 = [26,29]
cavallo_27_30 = [27_30]
cavallo_28_29 = [28,29]
cavallo_28_31 = [28,31]
cavallo_29_30 = [29,30]
cavallo_29_32 = [29,32]
cavallo_30_33 = [30,33]
cavallo_31_32 = [31,32]
cavallo_31_34 = [31,34]
cavallo_32_33 = [32,33]
cavallo_32_35 = [32,35]
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_1_4, cavallo_2_3, cavallo_2_5, cavallo_3_6, cavallo_4_5, 
cavallo_4_7, cavallo_5_6, cavallo_5_8, cavallo_6_9, cavallo_7_8, 
cavallo_7_10, cavallo_8_9,
                      cavallo_8_11, cavallo_9_12, cavallo_10_11, 
cavallo_10_13, cavallo_11_12, cavallo_11_14, cavallo_12_15, 
cavallo_13_14, cavallo_13_16, cavallo_14_15, cavallo_14_17, 
cavallo_15_18, cavallo_16_17, cavallo_16_19,
                      cavallo_17_18, cavallo_17_20, cavallo_18_21, 
cavallo_19_20, cavallo_19_22, cavallo_20_21, cavallo_20_23, 
cavallo_21_24, cavallo_22_23, cavallo_22_25, cavallo_23_24, 
cavallo_23_26, cavallo_24_27, cavallo_25_26,
                      cavallo_25_28, cavallo_26_27, cavallo_26_29, 
cavallo_27_30, cavallo_28_29, cavallo_28_31, cavallo_29_30, 
cavallo_29_32, cavallo_30_33, cavallo_31_32, cavallo_31_34, 
cavallo_32_33, cavallo_32_35, cavallo_33_36,
                      cavallo_34_35, cavallo_35_36]
ritardo_cavalli = 
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
cavalli_da_giocare = []
print()
print()
verifica_importo_congruo = 0
while verifica_importo_congruo == 0:
     capitale_disponibile = int(input("Scrivi con quanti Euro intendi 
iniziare a giocare "))
     if capitale_disponibile < 2000 or capitale_disponibile > 3000:
         print("Devi inserire un importo compreso tra 2000 e 3000 Euro")
         print()
     else:
         print()
         print("Ok, ora attendi che la ruota finisca di girare e ...")
         verifica_importo_congruo += 1
ripetizione_partita = 0
while ripetizione_partita ==0:
     ripetizione_numero_uscito = 0
     while ripetizione_numero_uscito == 0:
         verifica_numero_uscito = 0
         while verifica_numero_uscito == 0:
             sleep(2.5)
             numero_uscito = int(input("inserisci il numero uscito "))
             print()
             if numero_uscito not in numeri_in_gioco:
                 print("Devi scrivere un numero compreso tra 0 e 36")
                 print()
                 verifica_numero_uscito += 1
             else:
                 conferma_risposta = 0
                 while conferma_risposta == 0:
                     verifica_risposta = str(
                         input("Sei sicuro che il numero uscito e' " + 
str(numero_uscito) + "? Scrivi s oppure n "))
                     if verifica_risposta is not "s" and 
verifica_risposta is not "n":
                         print("Devi scrivere s oppure n")
                         print()
                         conferma_risposta = 0
                     elif verifica_risposta == "n":
                         print()
                         conferma_risposta += 1
                         ripetizione_numero_uscito = 0
                         verifica_numero_uscito += 1
                     else:
                         conferma_risposta += 1            #Esce dal 
ciclo while di conferma_risposta
                         ripetizione_numero_uscito += 1    #Esce dal 
ciclo while di ripetizione_numero uscito
                         verifica_numero_uscito += 1       #Esce dal 
ciclo while di verifica_numero uscito
                         ripetizione_partita += 1          #Esce dal 
ciclo while di ripetizione_partita
                         lunghezza_ritardo_cavalli = 
len(ritardo_cavalli) #Conta gli elementi della lista ritardo_cavalli
                         for posizione in 
range(lunghezza_ritardo_cavalli): # stabilisce che il ciclo for giri 
tante volte quanto lunga è la lista ritardo_cavalli
                             valore = ritardo_cavalli[posizione] 
#Attribuisce a valore lo stesso numero che è nella posizione 
corrispondente alla lista ritardo_cavalli
                             if numero_uscito not in 
riepilogo_cavalli[posizione]: #Se il numero uscito non è presente nella 
posizione esaminata di riepilogo_cavalli:
                                 ritardo_cavalli[posizione] = 
ritardo_cavalli.insert(posizione,valore + 1) #il valore corrispondente 
alla posizione di ritardo_cavalli aumenta di 1
                                 if valore > 42:#Se valore (ritardo 
delle uscite) è maggiore di 42:
                                     cavalli_da_giocare = 
cavalli_da_giocare.sort()#Ordina la lista cavalli_da giocare
                                     print()
                                 if valore == 42:#Se valore (ritardo 
delle uscite) è uguale a 42:
                                     cavalli_da_giocare = 
cavalli_da_giocare.append(ritardo_cavalli[posizione])#Aggiunge alla 
lista cavalli_da_giocare l'elemento di ritardo_cavalli che è giunto a 42 
ritardi
                                     cavalli_da_giocare = 
cavalli_da_giocare.sort()  # Ordina la lista cavalli_da giocare
                                     print()
else:                                                #Se numero_giocato 
è nella posizione riepilogo della lista riepilogo_cavalli:
                                 ritardo_cavalli[posizione] = 
ritardo_cavalli.insert(posizione, 0)
                                 if ritardo_cavalli[posizione] in 
cavalli_da_giocare:
                                     cavalli_da_giocare.remove = 
cavalli_da_giocare(ritardo_cavalli[posizione])
                         lunghezza_cavalli_da_giocare = 
len(cavalli_da_giocare)  # Conta gli elementi della lista cavalli_da_giocare
                         if lunghezza_cavalli_da_giocare > 0:
                             print()
                             print("E' ora possibile giocare queste 
combinazioni cavallo:")
                             print()
                             for i in 
range(lunghezza_cavalli_da_giocare):  # Stabilisce che il ciclo for giri 
tante volte quanto lunga è la lista_cavalli_da_giocare
                                 print(cavalli_da_giocare[i])  # Stampa 
il contenuto della lista cavalli_da_giocare
                                 print()
                         else:  # Se lista cavalli_da_giocare è vuota:
                             print()
                             print("Non ci sono combinazioni cavallo da 
giocare")
                             print()



Maggiori informazioni sulla lista Python