Printing a Checkboard without using Numpy

Viewed 502

I am trying to do print a checkerboard using arrays and without importing any packages like Numpy. The code should print back

X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X

This is what I have written

Checkerboard = [[0]*8 for i in range(8)]
for i in Checkerboard:
  p = 0
  q = 0
  for j in i:
    if q % 2 == 0 and p % 2 == 0:
      Checkerboard[i][j] = "X"
    elif q % 2 == 1 and p % 2 == 1:
      Checkerboard[i][j] = "X"
    p += 1
for i in Checkerboard:
  for j in Checkerboard:
    print(j, end='')
  print('')

But it keeps getting the error:

Checkerboard[i][j] = "X"
TypeError: list indices must be integers or slices, not list

Can anyone help me solve the problem or give some tips?
(This is a hw assignment)

2 Answers

Try this code:

Checkerboard = [["0"] * 8 for i in range(8)]
for i in range(len(Checkerboard)):
    for j in range(len(Checkerboard[i])):
        if i % 2 == 0 and j % 2 == 0:
            Checkerboard[i][j] = "X"
        elif i % 2 == 1 and j % 2 == 1:
            Checkerboard[i][j] = "X"


for place in Checkerboard:
    print(place, end='')
    print('')

I updated your code and made a few changes. The problem you have tried to change an a place in the board in this way:

Checkerboard[i][j] = "X" 

But i and j are not declared as an index.

If you would use comprehension your solution would look like this:

Checkerboard = [[0 if (i % 2 == 0 and j % 2 == 1) or (i % 2 == 1 and j % 2 == 0) else 'X' for j in range(8)] for i in range(8)]

Checkerboard

[['X', 0, 'X', 0, 'X', 0, 'X', 0],
 [0, 'X', 0, 'X', 0, 'X', 0, 'X'],
 ['X', 0, 'X', 0, 'X', 0, 'X', 0],
 [0, 'X', 0, 'X', 0, 'X', 0, 'X'],
 ['X', 0, 'X', 0, 'X', 0, 'X', 0],
 [0, 'X', 0, 'X', 0, 'X', 0, 'X'],
 ['X', 0, 'X', 0, 'X', 0, 'X', 0],
 [0, 'X', 0, 'X', 0, 'X', 0, 'X']]

Or using finer print:

for i in Checkerboard:
    for j in i:
        print(j, end=' ')
    print()

X 0 X 0 X 0 X 0 
0 X 0 X 0 X 0 X 
X 0 X 0 X 0 X 0 
0 X 0 X 0 X 0 X 
X 0 X 0 X 0 X 0 
0 X 0 X 0 X 0 X 
X 0 X 0 X 0 X 0 
0 X 0 X 0 X 0 X 
Related