如何修复在列表中返回最大增加"list index out of range" python 代码的错误?



所以我写了这段代码,让我从较小的元素到较高索引的较大元素的最大增加,两者之间的趋势只会增加,但我在"而 seq[index + 1]> seq[index]" 时遇到了"列表"和"元组索引超出范围"错误

因此,对于成功的例子:

max_increase((1,2,3,2)) == 2.0

max_increase([3,-1,2,1]) == 3.0

这是我下面的代码:

def max_increase(seq):
index = 1
inc = 0
diff = 0
n = 1
for index in range(1, len(seq)):
if seq[index] > seq[index - 1]:
diff = seq[index] - seq[index - 1]
while seq[index + 1] > seq[index]:
diff += seq[index + n] - seq[index]
index = index + 1
if diff > inc:
inc = diff
index = index + 1 
else:
index = index + 1
return inc

不是真正的最低代码,但首选基本代码,因为这是一门入门编码课程:)

让我出错的测试是:

max_increase([1.0,3.0,1.0,2.0]) == 2.0

btc_data = [ 6729.44, 6690.88, 6526.36, 6359.98, 6475.89, 6258.74,
6485.10, 6396.64, 6579.00, 6313.51, 6270.20, 6195.01,
6253.67, 6313.90, 6233.10, 6139.99, 6546.45, 6282.50,
6718.22, 6941.20, 7030.01, 7017.61, 7414.08, 7533.92,
7603.99, 7725.43, 8170.01, 8216.74, 8235.70, 8188.00,
7939.00, 8174.06 ]
btc_data.reverse()
assert abs(max_increase(tuple(btc_data))-589.45) < 1e-6

你像这样放置额外的条件,看起来你有编程错误

def max_increase(seq):
index = 1
inc = 0
diff = 0
n = 1
for index in range(1, len(seq)):
if seq[index] > seq[index - 1]:
diff = seq[index] - seq[index - 1]
while index != (len(seq)-1) and seq[index + 1] > seq[index]:
diff += seq[index + n] - seq[index]
index = index + 1
if diff > inc:
inc = diff
index = index + 1 
else:
index = index + 1
return inc
max_increase([1.0,3.0,1.0,2.0]) == 2.0

相关内容

最新更新