我已经使用 Udacity 学习编程和 Python 大约一个月了。对于其中一个问题,我们应该编写一个函数来检查传入的数独列表是否有效。
在下面的 for 循环中,我想同时使用原始列表和转置列表进行迭代row
,但错误地留在了我的语句的后半部分。我运行了它,令我惊讶的是,它仍然继续返回正确的答案。col
zip()
row
or
def check_sudoku(array):
is_sudoku = True
reference = range(1, len(array) + 1)
transposed = zip(array)
for row, col in zip(array, transposed):
if sorted(row) != reference or sorted(row) != reference:
is_sudoku = False
break
return is_sudoku
我的猜测是因为我is_sudoku = True
默认定义了,并且我正在rows
与参考列表进行比较,因此即使我的转置不起作用,它也会捕获无效值。row
当我用虽然替换第二个时col
,它坏了。
我的问题是,我的猜测对吗?如果没有,为什么这段代码有效,我怎样才能更好地写这个?
谢谢!(如果您想查看我传入的列表,也可以粘贴在键盘上 - http://codepad.org/IXDlZuUu)