擅长:python、mysql、java
<p>您不能仅使用数字的总和来验证网格。相反,您必须检查每一行和每一列是否包含从1到9的所有数字。你知道吗</p>
<p>你可以这样做:</p>
<pre><code>all_nums = set(range(1, 10))
with open("data") as data:
field = [[int(x) for x in line.split()] for line in data]
rows = map(set, field)
cols = map(set, zip(*field))
rows_ok = all(row == all_nums) for row in rows)
cols_ok = all(col == all_nums) for col in cols)
</code></pre>
<p>首先,我从数据输入创建一个整数列表。然后我提取行和列(<code>zip(*field)</code>基本上在侧面翻转<code>field</code>),并将它们转换成<code>set</code>,因为顺序并不重要。最后,我将<code>all</code>行和列与<code>all_nums</code>集进行比较。你知道吗</p>