コードは次のとおりです。
def row_check(table):
for ealst in table:
first = [ealst[0]]
for each in ealst[1:]:
if each not in first:
first.append(each)
else:
return False
return True
def col_check(table):
col = []
totalcol = []
count = 0
for rows in table:
for columns in range(len(table)):
col.append(table[int(columns)][count])
count += 1
totalcol.append(col)
col = []
return totalcol
def check_sudoku(table):
if row_check(table) and row_check(col_check(table)):
return True
return False
if __name__ == '__main__':
table = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
check_sudoku(table)
これは値 True を返しません。ここで、コードの実行後に関数を手動で呼び出すと、期待値が返されます。
>>> table
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> check_sudoku(table)
True
同じ動作を示す最小限の例を次に示します。
def check_sudoku(table):
return True
if __name__ == '__main__':
table = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
check_sudoku(table)
なぜこれが起こっているのですか?また、これを防ぐにはどうすればよいですか?つまり、呼び出されたときに True を返すにはどうすればよいですか?