擅长:python、mysql、java
<p>向代码中添加一些打印:</p>
<pre><code>print(len(rankedlen))
while j <= len(rankedlen):
print(' j ',j,' v ',v,' k ',k)
</code></pre>
<p>产生:</p>
<pre><code>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
</code></pre>
<p>当<code>j</code>达到10时,<code>rankedlen[10]</code>产生此错误。Python索引范围从0到n-1</p>
<p>将while更改为:</p>
<pre><code>while j < len(rankedlen):
</code></pre>
<p>产生:</p>
<pre><code>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}
</code></pre>