On 12/01/2015 19:35, WolfRage wrote:
So I was write as I suspected; the grid is not actually being built like
I thought it was. Sure the ID's print fine but when the grid positions
are procedurally accessed the program fails with IndexError.

python3 test1.py
| 19 |  5 |  5 |  5 |
| 11 |  6 | 19 | 11 |
|  6 |  6 | 11 | 19 |
| 11 | 20 |  6 |  5 |
| 11 |  5 | 20 |  5 |
| 20 | 20 | 11 | 11 |
| 19 | 19 |  5 |  5 |
| 11 | 19 | 19 |  5 |
After Eliminations
|  0 |  0 |  0 |  5 |
| 11 |  0 | 19 | 11 |
|  0 |  0 | 11 |  0 |
|  0 | 20 |  6 |  0 |
|  0 |  5 | 20 |  0 |
|  0 |  0 |  0 |  0 |
| 19 |  0 |  0 |  0 |
|  0 |  0 |  0 |  0 |
broke 0 5
0 6
broke 1 6
1 7
broke 2 6
2 7
broke 3 6
3 7
After Drops
|  0 |  0 |  0 |  5 |
|  0 |  0 | 19 |  0 |
|  0 |  0 | 11 |  0 |
|  0 | 20 |  6 |  0 |
|  0 |  0 |  0 |  0 |
|  0 |  0 |  0 |  0 |
| 11 |  0 |  0 |  0 |
| 19 |  5 | 20 | 11 |
Normal
| 0,0 | 1,0 | 2,0 | 3,0 |
| 0,1 | 1,1 | 2,1 | 3,1 |
| 0,2 | 1,2 | 2,2 | 3,2 |
| 0,3 | 1,3 | 2,3 | 3,3 |
| 0,4 | 1,4 | 2,4 | 3,4 |
| 0,5 | 1,5 | 2,5 | 3,5 |
| 0,6 | 1,6 | 2,6 | 3,6 |
| 0,7 | 1,7 | 2,7 | 3,7 |
Procedurally
# The first printed pair is the id, the second pair in parentheses is
# the procedurally accessed id, which should be all ordered as (column,
# row)
| 0,0 (0,0) | 1,0 (0,1) | 2,0 (0,2) | 3,0 (0,3) | Traceback (most recent
call last):
   File "test1.py", line 186, in <module>
     grid.draw_by_id_proc()
   File "test1.py", line 75, in draw_by_id_proc
     print(self.grid[col_num][row_num].id, '(' + str(col_num) + ',' +
str(row_num) + ')', end=' | ')
IndexError: list index out of range


I haven't looked carefully at your code but there's always a smell in Python when you see structure[x][y]. Can you change the grid so you always write something like:-

for row in grid:
    for cell in row:
        process(cell)

I say this as I'm all for short term pain, long term gain, especially when it's guaranteed to eliminate "list index out of range" errors.

--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to