这是我在此的头一篇博文。我是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/

10-16 15:00
查看更多