我正在尝试使我的PC填写有一些额外要求的数独。 我将数独中的所有位置都分配给了这样的变量。 aa =“ 11”(aa在左上角),ii =“ 99”。 我需要用字符串而不是整数来处理拼图的额外要求。
示例:
aa, ab, ac, ad, ae, af, ag, ah, ai = "11", "12", "13", "14", "15", "16", \
"17", "18", "19"
此外,我这样制作了行和列:
row1 = [aa, ab, ac, ad, ae, af, ag, ah, ai]
row2 = [ba, bb, bc, bd, be, bf, bg, bh, bi]
rows = [row1, row2, etc...]
col1 = [row[0] for row in rows]
col2 = [row[1] for row in rows]
这是我应该填写的数独功能:
def sudoku():
for var in alles:
options = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
for row in rows:
if var in row:
for other in row:
if other in options:
options.remove(other)
for col in cols:
if var in col:
for other in col:
if other in options:
options.remove(other)
if options != []:
var = random.choice(options)
else:
break
这个想法是,它为数独的每个点(所有变量)分配一个新值,并且新值不能已经在同一行或同一列中。
问题是我的函数似乎根本没有改变'var'。此外,当将鼠标悬停在函数中的最后一个“ var”上时,pycharm会发出通知:“未使用局部变量”。
您知道我如何使我的功能按预期工作吗?
感谢您的阅读,我希望您有一个快乐,健康的2020年:)