Il 30 giugno 2014 10:54, Gabriele Battaglia <iz4...@libero.it> ha scritto: > Ho questa funzione che inizializza una matrice bidimensionale: una lista che > ne contiene altre 2 formando una griglia 8x8. La funzione restituisce la > matrice che poi viene usata in altre parti dello script. > > Ecco la funzione: > *** > def InizializzaSCH(): > '''Restituisce la matrice per la scacchiera''' > global inizializzata, SCH > if inizializzata: > del col1, col2, SCH > inizializzata = True > SCACCHIERA=[]; col1=[]; col2=[] > for j in range(4): > col1.append(CASANERA); col1 = col1 [:] > col1.append(CASABIANCA); col1 = col1 [:] > for j in range(4): > col2.append(CASABIANCA); col2 = col2 [:] > col2.append(CASANERA); col2 = col2 [:] > for y in range(4): > SCACCHIERA.append(col1); col1 = col1 [:] > SCACCHIERA.append(col2); col2 = col2 [:] > return SCACCHIERA > *** >
Ci sono delle cose strane nella tua funzione: 1. "global": quando usi questa istruzione poniti sempre la domanda se non sia il caso di ripensare la logica del programma. 2. " if inizializza: [...] inizializza = True": se inizializza è già True è inutile assegnargli True. 3. "SCACCHIERA": in Python la convenzione è che il TUTTOMAIUSCOLO viene usato per le costanti. 4. ogni volta che aggiungi un elemento ad una colonna poi ricopi la colonna, mossa assolutamente inutile. 5. I due primi cicli possono essere riuniti in uno unico. 6. Il terzo ciclo non costruisce una scacchiera con diverse colonne ma sempre con le stesse due: le ultime create dai cicli precedenti. per quanto riguarda il punto 1 direi che inizializzaSCH deve solo inizializzare la scacchiera fregandosene se era già inizializzata. È chi chiana "inizialzzaSCH" che si deve preoccupare de deve proprio farlo o no. Per cui elimini le prime quattro righe della funzione. Inizializzare una scacchiera consiste nell'aggiungere 4 volte una col1 e una col2 e queste sono costruite aggiungendo 4 volte una CASANERA e una CASABIANCA. una cosa del genere: def iniSCH(): """'Restituisce la matrice per la scacchiera'''"" result = [] for i in rang(4): col1 = [] col2 = [] # ... qui il ciclo che crea le colonne result.append(col1) result.append(col2) return result Ciao -- Daniele www.fugamatematica.blogspot.com giusto! nel verso forse è perché non guardiamo le cose Quando non ci capiamo, _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python