Hey Tim,
try this matrix for board in the solver (text) file. this is giving incorrect solution. you can verify correct answer if you wish from https://anysudokusolver.com/.
correct solution

board = [
[1, 0, 0, 0, 4, 0, 0, 0, 0],
[0, 9, 2, 6, 0, 0, 3, 0, 0],
[3, 0, 0, 0, 0, 5, 1, 0, 0],
[0, 7, 0, 1, 0, 0, 0, 0, 4],
[0, 0, 4, 0, 5, 0, 6, 0, 0],
[2, 0, 0, 0, 0, 4, 0, 8, 0],
[0, 0, 9, 4, 0, 0, 0, 0, 1],
[0, 0, 8, 0, 0, 6, 5, 2, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 6]
]
your code solution is :

#Check Col
for i in range(0, len(bo)):
if bo[i][pos[1]] == num and pos[1] != i:
return False
Here is this problem - it should be pos[0] != i instead of pos[1]
I'm getting (sorry to post entire thing):
IndexError Traceback (most recent call last)
in
96
97 pp = pprint.PrettyPrinter(width=41, compact=True)
---> 98 solve(board)
99 pp.pprint(board)
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
12 bo[row][col] = i
13
---> 14 if solve(bo):
15 return True
16
in solve(bo)
9
10 for i in range(1,10):
---> 11 if valid(bo, i, (row, col)):
12 bo[row][col] = i
13
in valid(bo, num, pos)
37 for i in range(box_y3, box_y3 + 3):
38 for j in range(box_x * 3, box_x*3 + 3):
---> 39 if bo[i][j] == num and (i,j) != pos:
40 return False
41
IndexError: list index out of range
current code:
#Check Col
for i in range(0, len(bo)):
if bo[i][pos[1]] == num and pos[1] != i:
return False
should be:
#Check Col
for i in range(0, len(bo)):
if bo[i][pos[1]] == num and pos[0] != i:
return False