gpt4 book ai didi

python - 赋值前引用的局部变量 - 错误

转载 作者:行者123 更新时间:2023-11-30 21:51:03 26 4
gpt4 key购买 nike

该函数应该给以列表形式给出的数字加 1。如果列表是 [1, 2, 3] ,那么这个函数应该返回 [1, 2, 4]因为123 + 1 == 124 .

下面是有问题的函数:

def plusOne(self, A):
val = 1;
for i in range(len(A)-1,0,-1):
val = val + A[i]
borrow = int(val/10)
if borrow == 0:
A[i] = val
break;
else:
A[i] = val%10
val = borrow
A = [borrow] + A
while A[0]==0:
del A[0]
return A

错误信息是:

Traceback (most recent call last):
File "main.py", line 225, in
Z = obj.plusOne(A)
File "/tmp/judge/solution.py", line 8, in plusOne
A = [borrow] + A
UnboundLocalError: local variable 'borrow' referenced before assignment

令人惊讶的是,下面的代码运行时没有任何错误:

class Solution:
# @param A : list of integers
# @return a list of integers
def plusOne(self, A):
val = 1;
for i in range(len(A),0,-1):
val = val + A[i-1]
borrow = int(val/10)
if borrow == 0:
A[i-1] = val
break;
else:
A[i-1] = val%10
val = borrow
A = [borrow] + A
while A[0]==0:
del A[0]
return A

我仍然不明白,如果直接在循环内初始化借用变量会导致错误,那么上面的代码片段也应该抛出错误,对吗?

最佳答案

borrow 在 for 循环内声明/初始化。

for i in range(len(A)-1,0,-1):

如果 len(A) 为 1,则不会有任何范围可供循环,并且借位永远不会进入范围,因此会出现错误。

关于python - 赋值前引用的局部变量 - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60192568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com