2016-07-01 2 views
0

J'essaie de résoudre Projet Euler Problème 15.Python 2 IndexError: liste des index hors de portée

J'ai mis quelques tableaux dans mainarray.

Je reçois un IndexError: liste index hors de la plage sur la ligne 33 et je ne sais pas pourquoi. Est-ce que quelqu'un peut m'aider?

Merci.

Voici mon code:

def make_file(num_matrix): 
    file = open("euler15.csv", "w") 

    for a in num_matrix: 
     for b in a: 
      file.write(str(b) + ",") 
     file.write("\n") 
    file.close() 

mainarray = [] 

act_cell_row = 1 
act_cell_column = 1 
summand_1 = 0 
summand_2 = 1 
x = 1 
y = 0 
for c in range(0,20): 
    mainarray.append([]) 
for d in range(2,22): 
    mainarray[0].append(d) 
for e in range(3,22): 
    mainarray[x].append(e) 
    x += 1 

for f in mainarray: 
    for g in f: 
     print "act_cell_column ", act_cell_column 
     print "act_cell_row ", act_cell_row 
     print "summand_2 ", summand_2 
     print "summand_1 ", summand_1 
     akt_feld = (mainarray[summand_1][summand_2]) + (mainarray[summand_2][summand_1]) 
     mainarray[act_cell_row][act_cell_column] = akt_feld 
     if y < 18: 
      summand_2 += 1 
      act_cell_column += 1 
      y += 1 
    summand_1 += 1 
    summand_2 = 1 
    act_cell_row += 1 
    act_cell_column = 1 

make_file(mainarray) 
result = mainarray[19][19] 
print "RESULT: ", result 
+0

Vous devez inclure la trace complète. La ligne 31 dans votre code est 'print" summand_1 ", summand_1' ici. –

+1

MAINARRAY: [[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16] ], [17], [18], [19], [20], [21]] x obtient 19. parce que dans les tableaux principaux sont 20 tableaux. de 0 à 19 – Mr3m4r3

+0

Vous oubliez également de réinitialiser 'summand_1', après' for for g' f' loop. – Arnial

Répondre

0

Pour vérifier, en cas d'erreur occures, vous pouvez ajouter ce code avant akt_feld mission:

try: 
    _ = mainarray[summand_1][summand_2] 
except IndexError: 
    print("something wrong with this indexes", summand_1, summand_2) 

Ou tout simplement appeler mainarray[1][1].

In [7]: print(mainarray[1]) 
[3] 

In [8]: print(mainarray[1][1]) 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-8-e23bb5ccbc5a> in <module>() 
----> 1 print(mainarray[1][1]) 

IndexError: list index out of range 
+0

Avec l'essai et sauf, l'erreur est comme avant. Je n'imprime pas "quelque chose ne va pas avec ces index" – Mr3m4r3