Skip to main content
 首页 » 编程设计

python之while 语句在它应该停止的时候不停止

2025年05月04日16zhwl

这是我在这里的第一篇文章。我是 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 

这可能不是您想要的。