3 回答

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
“<=”運(yùn)算符包括“j”= len(rankedlen)。這意味著在列表末尾,“j”超出范圍。請(qǐng)記住,列表的長(zhǎng)度可能是“x”,但同一列表的最后一個(gè)索引是“x-1”。

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
在您的代碼中添加一些打?。?/p>
print(len(rankedlen))
while j <= len(rankedlen):
print(' j ',j,' v ',v,' k ',k)
產(chǎn)生:
1907:~/mypy$ python3 stack64148094.py
10
j 0 v 0 k 1
j 1 v 1 k 1
j 2 v 2 k 1
j 3 v 3 k 1
j 4 v 4 k 1
j 4 v 0 k 2
j 5 v 1 k 2
j 6 v 2 k 2
j 7 v 3 k 2
j 7 v 0 k 3
j 7 v 0 k 4
j 7 v 0 k 5
j 8 v 1 k 5
j 9 v 2 k 5
j 10 v 3 k 5
Traceback (most recent call last):
File "stack64148094.py", line 9, in <module>
if rankedlen[j] == k:
IndexError: list index out of range
當(dāng)j達(dá)到10時(shí),rankedlen[10]產(chǎn)生此錯(cuò)誤。Python 索引范圍從 0 到 n-1。
將 while 更改為:
while j < len(rankedlen):
產(chǎn)生:
1909:~/mypy$ python3 stack64148094.py
10
j 0 v 0 k 1
...
j 8 v 1 k 5
j 9 v 2 k 5
{1: 4, 2: 3, 3: 0, 4: 0}
添加回答
舉報(bào)