在线编译器中 Python 中的副作用错误



我在在线编译器中编译时在 Python 中遇到副作用错误

尝试更改某些语法,但错误仍然存在

def rotate(A): 
N = len(A[0]) 
for i in range(N // 2): 
for j in range(i, N - i - 1): 
temp = A[i][j] 
A[i][j] = A[N - 1 - j][i] 
A[N - 1 - j][i] = A[N - 1 - i][N - 1 - j] 
A[N - 1 - i][N - 1 - j] = A[j][N - 1 - i] 
A[j][N - 1 - i] = temp  
return A 

旋转([[1,2],[3,4]](

预期输出 [[3, 1], [4, 2]]

实际输出为 副作用

如果我将最后一个命令从返回更改为 print(A(,则输出 - [[3, 1], [4, 2]] Sid... 这意味着某些东西正在扩展我的输出,该输出将被终止。

在某些 Python 编译器中显示矩阵翻转函数的副作用错误

此人收到相同类型的错误

def rotate(A): 
N = len(A[0]) 
for i in range(N // 2): 
for j in range(i, N - i - 1): 
temp = A[i][j] 
A[i][j] = A[N - 1 - j][i] 
A[N - 1 - j][i] = A[N - 1 - i][N - 1 - j] 
A[N - 1 - i][N - 1 - j] = A[j][N - 1 - i] 
A[j][N - 1 - i] = temp 
print(A)
return none  

编辑了一点后,我通过了其中一个测试用例,但在 3 个错误案例中的 2 个中出现运行时错误 https://i.stack.imgur.com/H6GqQ.jpg

伙计们,它终于奏效了!!!!

def rotate(A):   
N = len(A[0]) 
for i in range(N // 2): 
for j in range(i, N - i - 1): 
temp = A[i][j] 
A[i][j] = A[N - 1 - j][i] 
A[N - 1 - j][i] = A[N - 1 - i][N - 1 - j] 
A[N - 1 - i][N - 1 - j] = A[j][N - 1 - i] 
A[j][N - 1 - i] = temp    
print(A)
return none  

感谢大家为这里的新人提供急需的帮助

你混淆了编译器编写此函数的目的。 大多数函数要么返回结果,要么更改输入参数。 你同时做:返回结果,并对输入产生"意外"的副作用。 这通常是糟糕的函数设计,此编译器认为这是一个错误。

执行以下两项操作之一来解决此问题:

  1. 制作A的本地副本以进行操作和返回。
  2. 完成后只需从函数返回;不要返回A的额外副本。

最新更新