这是我在此的头一篇博文。我是Python和程序设计的新手,所以我不确定哪里出错了。这是我针对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
这可能不是您想要的。
关于python - 虽然声明应该在何时停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10109565/