【发布时间】:2020-05-28 06:15:05
【问题描述】:
这个函数应该给以列表形式给出的数字加 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
我还是不明白,如果直接在循环内部初始化借用变量会导致错误,那么上面的 sn-p 也应该抛出错误,对吧?
【问题讨论】:
-
此函数似乎与某个类无关,如果不是,请尝试删除
self参数。 -
如果
for循环没有执行,就会发生这种情况——因此borrow从未在其中初始化。你用什么来调用这个函数?
标签: python python-3.x list