有人可以帮助我,为什么我摆脱了索引错误。
def subset(lst,n):
A = 0
B = 1
C = 2
for i in range(len(lst)):
if n == lst[A]+lst[B]+lst[C]:
return ('True')
if n != lst[A]+lst[B]+lst[C]:
C = C+1
我的输出低于输出。
subset([1,2,5,3],6)
Out[136]: 'True'
subset([1,2,5,3],9)
if n == lst[A]+lst[B]+lst[C]:
IndexError: list index out of range
我需要传递列表并添加三个数字并检查它是否等于n。
答案 0 :(得分:1)
您没有使用i
,而是添加C
,这会导致错误。
也许以下是你想要的:
def subset(lst,n):
for A in range(len(lst)-2):
for B in range(A+1, len(lst)-1):
for C in range(B+1, len(lst)):
if n == lst[A]+lst[B]+lst[C]:
return ('True')
return('False')
答案 1 :(得分:0)
你的行
if n != lst[A]+lst[B]+lst[C]:
C = C+1
允许C
成长。在很多情况下,由于同样的原因,此代码将失败,但是有一些特定的输入不会导致此失败,因此它不会一直这样做。您需要确保C
永远不会超过列表长度 - 1
我不完全确定你要做的是什么,所以这只是你为什么会出现索引错误的直接答案。
答案 2 :(得分:0)
C = C + 1最终变为4,但[1,2,5,3]的最后一个指数为3。 这就是为什么在行n == lst [A] + lst [B] + lst [C]它失败
You may want to change you loop to:
for i in range(len(lst)):
if n == lst[A]+lst[B]+lst[C]:
return True
elif C < len(lst) -1:
C += 1
else:
return False