这是我在这里的第一篇文章。我是 Python 和一般编程的新手,所以我不确定哪里出错了。这是我在 Project Euler 上针对问题 #52 提出的解决方案(我知道这可能也不是最好的方法)。我对这段代码的问题是 while 语句在得到正确答案时不会中断。只有当我以正确的答案开始 num 时,它才会捕捉并给我答案:142857,但是当我用其他任何东西初始化它时,它会继续计数超过 142857。奇怪的是我使用相同的方法来回答另一个欧拉问题,那个工作得很好。谁能告诉我为什么会发生这种情况?谢谢!
def digits(number):
return [int(x) for x in str(number)]
def same_digits():
num = 1
x2 = sorted(digits(num*2))
x3 = sorted(digits(num*3))
x4 = sorted(digits(num*4))
x5 = sorted(digits(num*5))
x6 = sorted(digits(num*6))
while x2 != x3 != x4 != x5 != x6:
num += 1
print num
请您参考如下方法:
x2 等变量在循环内不会改变,因此它们将始终保持初始值。如果您希望在 num 更改时重新计算它们的值,则需要将该代码移到循环中。
此外,您在这里使用了比较运算符链接。表达式
x2 != x3 != x4 != x5 != x6
相当于
x2 != x3 and x3 != x4 and x4 != x5 and x5 != x6
这可能不是您想要的。
