Python While语句在应该停止时不停止

Python While语句在应该停止时不停止,python,while-loop,Python,While Loop,这是我在这里的第一篇文章。我对Python和编程都是新手,所以我不确定哪里出了问题。这是我针对Euler项目52题提出的解决方案,我知道这可能也不是最好的方法。我对这段代码的问题是while语句在得到正确答案时不会中断。只有当我用正确的答案:142857开始num时,它才会捕捉到它并给出答案,但当我用其他任何东西初始化它时,它会继续计数到142857之后。奇怪的是,我用同样的精确方法来回答另一个欧拉问题,这个问题很好。谁能告诉我为什么这里会发生这种事?谢谢 def digits(number):

这是我在这里的第一篇文章。我对Python和编程都是新手,所以我不确定哪里出了问题。这是我针对Euler项目52题提出的解决方案,我知道这可能也不是最好的方法。我对这段代码的问题是while语句在得到正确答案时不会中断。只有当我用正确的答案:142857开始num时,它才会捕捉到它并给出答案,但当我用其他任何东西初始化它时,它会继续计数到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
while循环永远不会中断,因为x2、x3、x4、x5、x6都处于相同的值。循环中只有num更改

此外,x2!=x3!=x4!=x5!=x6看起来很可疑。要检查所有数字是否不同,请尝试:

len(set([x2,x3,x4,x5,x6])) != 5
该集合只接受唯一值,len计算该集合的大小。最好把它们放在一个列表中,比如说R,这就变成:

len(set(R)) != 5
当您的列表包含5个以上元素时,非常方便

while循环永远不会中断,因为x2、x3、x4、x5、x6都处于相同的值。循环中只有num更改

此外,x2!=x3!=x4!=x5!=x6看起来很可疑。要检查所有数字是否不同,请尝试:

len(set([x2,x3,x4,x5,x6])) != 5
该集合只接受唯一值,len计算该集合的大小。最好把它们放在一个列表中,比如说R,这就变成:

len(set(R)) != 5

当您的列表包含5个以上元素时,非常方便

> P>你没有修改while循环中的任何XI参数,所以比较没有变化。

< P>你没有修改while循环中的任何席席参数,所以比较永远不会改变。

< P>变量x2等在循环内没有改变,所以他们总是保持它们的初始值。如果希望在num更改时重新计算它们的值,则需要将该代码移动到循环中

此外,这里使用的是比较运算符链接。表情

x2 != x3 != x4 != x5 != x6
相当于

x2 != x3 and x3 != x4 and x4 != x5 and x5 != x6
这可能不是您想要的。

变量x2等在循环中没有更改,因此它们将始终保持其初始值。如果希望在num更改时重新计算它们的值,则需要将该代码移动到循环中

此外,这里使用的是比较运算符链接。表情

x2 != x3 != x4 != x5 != x6
相当于

x2 != x3 and x3 != x4 and x4 != x5 and x5 != x6

这可能不是你想要的。

ands不是问题,但第一部分是。谢谢,我以后会记得的。ands不是问题,但第一部分是。谢谢,我以后会记得的。OP实际上不需要x2==x3==x4==x5==x6。是的,不把我的变量放在while循环中是个问题。不过,我的支票确实起到了预期的作用。我不确定你所描述的方法是否符合我的要求。感谢您的回答。OP实际上不需要x2==x3==x4==x5==x6。是的,问题是没有将我的变量放入while循环。不过,我的支票确实起到了预期的作用。我不确定你所描述的方法是否符合我的要求。感谢您的回答。请不要删除此问题-它可能对其他人有用!它也会使下面的所有答案无效。是的,我在尝试删除它后意识到了这一点。lol。感谢您恢复它Sven=对不起,我是新来的。请不要删除该问题-它可能对其他人有用!它还使下面的所有答案无效。是的,我在尝试删除它后意识到了这一点。lol。谢谢你恢复它Sven=对不起,我是新来的。