擅长:python、mysql、java
<p>正如<a href="https://stackoverflow.com/questions/45250720/im-new-to-programming-and-am-trying-my-hand-at-writing-my-own-reverse-function#comment77466151_45250720">this comment</a>所说的,问题是您在遍历列表时修改了它。你知道吗</p>
<p>基本上,<code>for i in range plist</code>不会遍历所有的元素,因为在循环遍历时会缩短列表。这就是您在迭代列表时所发生的事情。你知道吗</p>
<pre><code>holding plist
d ["J","a","m","e","s","B","o","n","d"]
^
dn ["J","a","m","e","s","B","o","n"]
^
dno ["J","a","m","e","s","B","o"]
^
dnoB ["J","a","m","e","s","B"]
^
dnoBs ["J","a","m","e","s"]
^ #can't loop any further
</code></pre>
<p>你能做的就是这样</p>
<pre><code>for i in range(len(plist), -1, -1):
holding = holding + plist[i]
</code></pre>
<p>还是这个</p>
<pre><code>def reverse(text):
return text[::-1]
</code></pre>
<p>或者可以使用内置的<code>reversed</code>函数,如<a href="https://stackoverflow.com/a/45250758/5770486">equaio did</a>。你知道吗</p>