【发布时间】:2021-05-07 09:32:19
【问题描述】:
如果这看起来是一个愚蠢的问题,我很抱歉,但我发誓我搜索了很多,但我无法理解我找到的任何回复,因为他们提到了列表列表和列表理解,我认为这不适用于这里(如果适用,我很抱歉)。
代码如下:
resultado_anterior = [0, 0, 0, 0]
for k in range(max_iteracao):
print('variable "resultado_anterior" = ', resultado_anterior[0])
resultado[0] = matriz[0][4] - (mult(0,1) + mult(0,2) + mult(0,3))
resultado[1] = matriz[1][4] - (mult(1,0) + mult(1,2) + mult(1,3))
resultado[2] = matriz[2][4] - (mult(2,0) + mult(2,1) + mult(2,3))
resultado[3] = matriz[3][4] - (mult(3,0) + mult(3,1) + mult(3,2))
print('variable "resultado_anterior" = ', resultado_anterior[0])
print('variable "resultado" = ', resultado[0])
resultado_anterior = resultado
我的目的是将“resultado”的前一个结果存储在一个变量(“resultado_anterior”)中,以便我可以比较它们并找到错误。奇怪的是,虽然变量“resultado_anterior”的属性保留在最后一行,但当“resultado”在第 5 到 8 行更新时,它的值也会更新。这里我展示了“打印”行的结果。正如上面很容易注意到的那样,在更改变量“resultado”的值之前有一个打印,在它之后还有另一个打印,但仍然在“resultado_anterior”的更改之前。
变量“resultado_anterior”=0
变量“resultado_anterior”=0
变量“结果”= 9.0
考虑到上面的结果,代码没有问题。但是下面的结果是最奇怪的:
变量“resultado_anterior”=9.0
变量“resultado_anterior”=6.458333333333333
变量“结果”= 6.458333333333333
如您所见,在更改“resultado”之前,变量“resultado_anterior”等于 9.0,但在更新“resultado”后其值变为 6.4583,即使它位于负责归因的行之前。这样一来,“resultado”就等于“resultado_anterior”,而错误实际上不是“等于零”。
简而言之,问题在于变量“resultado_anterior”的值是在负责的行之前分配的。
有什么办法可以解决吗?最让我吃惊的是,在第一次循环的时候并没有出现错误。
【问题讨论】:
-
听说过调试器吗?有很多免费的。