[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