擅长:python、mysql、java
<p>你错了<code>enumerate</code>。它从MSB开始,所以</p>
<pre><code>for i, bit in enumerate('110'):
print (i, bit)
</code></pre>
<p>会产生<code>(0, 1), (1, 1), (2, 0)</code>,而不是{<cd3>}。在</p>
<p>除此之外,还有一些风格建议:</p>
<ul>
<li><a href="http://www.python.org/dev/peps/pep-0008/" rel="nofollow">Please avoid using ^{<cd4>} in python</a>。在页面上搜索<code>Compound statements</code></li>
<li><a href="http://www.python.org/dev/peps/pep-0202/" rel="nofollow">Use list comprehensions if possible</a></li>
<li>或者注释是错误的,或者您忘记了您<code>multiply</code>对列表进行操作。如果是前者-删除它,这是非常混乱。如果是后者-您现有的代码根本无法工作,因为列表上没有定义<code><<</code>运算符。在</li>
</ul>
<p>因此,<code>multiply</code>编写和修复更好:</p>
^{pr2}$
<p>另外,作为最后一个建议,为什么不允许python为您做这些事情呢?它内置了对任意长整数的支持,因此所有的示例都等价于<code>a*b</code>,或者,如果您希望结果是二进制形式<code>"{0:b}".format(a*b)</code></p>