result = {}
rankedlen = [1,1,1,1,2,2,2,5,5,5]
v = 0
k = 1
j = 0
while j <= len(rankedlen):
if rankedlen[j] == k:
v += 1
j += 1
else:
result[k] = v
k += 1
v = 0
print(len(rankedlen))
while j <= len(rankedlen):
print(' j ',j,' v ',v,' k ',k)
产生:
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
当j达到10时,rankedlen[10]产生此错误。Python索引范围从0到n-1
将while更改为:
while j < len(rankedlen):
产生:
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}
“<;=”符号运算符包括'j'=len(rankedlen)。这意味着列表末尾的“j”超出范围。请记住,列表的长度可能是“x”,但同一列表的最后一个索引是“x-1”
改变<;=至<强>
向代码中添加一些打印:
产生:
当
j
达到10时,rankedlen[10]
产生此错误。Python索引范围从0到n-1将while更改为:
产生:
相关问题 更多 >
编程相关推荐