擅长:python、mysql、java
<p>我看到两个问题。在</p>
<p>首先,您(两次)修改要迭代的列表:</p>
<pre><code>for x in L:
if firstCheck(x) == False:
#This quickly gets rid of some elements, not all, but some.
L.remove(x)
</code></pre>
<p>这将导致意想不到的和难以预测的行为。迭代列表的副本或使用列表理解进行简单筛选:</p>
^{pr2}$
<p>等等</p>
<p>第二,您没有检查以消除任何前导零,所以check(10)在应该为False时为True。修复这些问题后,您的代码似乎可以正常工作:</p>
<pre><code>>>> len(solve(10))
0
>>> len(solve(1000))
120
</code></pre>
<p>[我刚刚添加了一个参数来选择范围。]</p>