我为数独求解程序编写了代码并立即追踪错误。有一个功能"插入"应该复制字典" mglwerte"并改变它。但是,尽管在函数的开头使用了copy,函数不仅会更改副本而且会更改原始字典。这是函数的调用:
print(ebene, ": 748: ", mglwerte["748"], " / 779: ", mglwerte["779"])
sudokuneu, mglwerteneu, geklappt = insert(int(var[0]), int(var[1]), wert, sudoku, mglwerte)
print(ebene, ": 748: ", mglwerte["748"], " / 779: ", mglwerte["779"])
功能本身:
def insert(z,s,v,sudokualt,mglwertealt):
sudoku = sudokualt.copy()
mglwerte = mglwertealt.copy()
geschafft = True
q = 3*int((z-1)/3) + int((s-1)/3) + 1
keyfull = str(z) + str(s) + str(q)
if v not in mglwerte[keyfull]:
print(v, "not in ", keyfull)
return None, None, False
sudoku[keyfull] = v
mglwerte[keyfull] = {}
for key,value in mglwerte.items():
if len(value) > 0:
if str(key[0]) == str(z) or str(key[1]) == str(s) or str(key[2]) == str(q):
value.discard(v)
mglwerte[key] = value
if len(value) < 1:
geschafft = False
return sudoku, mglwerte, geschafft
第一段代码中的印刷语句告诉我,&#34; mglwerte&#34;在调用函数后更改。我怎么能改变这个?