擅长:python、mysql、java
<p>循环中有一个“off by one”错误。您试图在<code>binary</code>的最后一个元素的末尾添加一个字符(我想)。但是,对于3的输入,使用下标8(2**3)。二进制有0-7个元素;下标8超出界限。也许你需要</p>
<pre><code> binary[y].insert(len(binary[y])-1,"0")
</code></pre>
<p>但是,我注意到你总是在列表的末尾插入。为什么不直接使用<code>append</code>?你知道吗</p>
<pre><code> binary[y].append("0")
</code></pre>
<p>更好的是,不要有字符列表,而是将每个字符都设置为字符串:</p>
<pre><code> binary[y] += "0"
</code></pre>
<p>另外,请注意Python中的复制功能;您不需要那些繁琐的while循环:只需添加所需数量的1或0即可。比如:</p>
<pre><code> binary += "0" * (lenOfPart" - p)
</code></pre>
<p>一旦你学会了一些语言工具,你就可以简化很多。你知道吗</p>
<p>最重要的是,在上层找出你真正需要完成的事情。告诉我们,你可以把问题和解决办法都简单化。例如,如<code>Delirious Lettuce</code>所示,您可以通过在<code>itertools</code>包中搜索<em>first</em>来消除很多悲伤。你知道吗</p>