擅长:python、mysql、java
<p>总结评论中的所有建议:</p>
<p>你的主要问题是:</p>
<ul>
<li>创建<code>numbers</code>列表时,使用<code>number = int(number/10)</code><em><strong>这会更改<code>number</code>变量本身</strong></em>,直到它等于零。这意味着,正如您所经历的,<code>result == number</code>将始终是<code>False</code></李>
</ul>
<hr/>
<p>代码中的一些冗余部分:</p>
<ol>
<li><p>请参见<a href="https://stackoverflow.com/questions/1906717/splitting-integer-in-python">Splitting integer in Python?</a>以获取数字的数字列表。大多数情况下,您只需执行<code>numbers = [int(i) for i in str(number)]</code>。这实际上可以解决上面的问题,因为您不会以这种方式更改<code>number</code></p>
</li>
<li><p>数字已经是整数,因此不需要<code>int</code>转换。在Python中使用直接循环比在索引上循环更具可读性:</p>
<pre><code>qubes = []
for num in numbers:
qubes.append(num**len(numbers))
</code></pre>
</li>
<li><p><code>sum(i for i in qubes)</code>只是说<code>sum(qubes)</code>的一种过于明确的方式</p>
</li>
<li><p>根据布尔结果打印“真”或“假”。不需要条件,只需<code>print(result == number)</code></p>
</li>
</ol>
<hr/>
<p>综合以上所有内容,只需一行代码即可实现:</p>
<pre><code>print(number == sum(int(digit)**len(str(number)) for digit in str(number)))
</code></pre>