Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 最大回文积_Python - Fatal编程技术网

Python 最大回文积

Python 最大回文积,python,Python,我想做的是找到由两个3位数字的乘积构成的最大回文。(下面的代码是这样的)现在我知道最大的数字是906609或913*993。现在我遇到的问题是,下面的代码找不到这个数字。由于代码是现在,它发现最大的是90909 for x in xrange(0, 1000): for y in xrange(0, 1000): #print '%d * %d = %d' % (x, y, x*y) num = (x * y) q = list(str(x

我想做的是找到由两个3位数字的乘积构成的最大回文。(下面的代码是这样的)现在我知道最大的数字是906609或913*993。现在我遇到的问题是,下面的代码找不到这个数字。由于代码是现在,它发现最大的是90909

for x in xrange(0, 1000):
    for y in xrange(0, 1000):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q:
            hold3 = num, q, x , y
            print(hold3)

print(hold3)
现在如果我把for中的数字改为914和994。它会给我906609的答案。 我想知道为什么我会得到两个不同的号码。对不起,我对python很陌生

for x in xrange(0, 914):
    for y in xrange(0, 994):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q:
            hold3 = num, q, x , y
            print(hold3)

print(hold3)

这是因为
906609
是最大的回文乘积,但不是对应于
x
最大值的回文数(
999
,其中
y==91

更新前检查:

        if num == q and num > hold3[0]:

您需要初始化,例如
hold3=[0]

这是因为
906609
是最大的回文乘积,但不是对应于
x
最大值的回文数(
999
,其中
y==91

更新前检查:

        if num == q and num > hold3[0]:

您需要初始化,例如
hold3=[0]

这是因为
906609
是最大的回文乘积,但不是对应于
x
最大值的回文数(
999
,其中
y==91

更新前检查:

        if num == q and num > hold3[0]:

您需要初始化,例如
hold3=[0]

这是因为
906609
是最大的回文乘积,但不是对应于
x
最大值的回文数(
999
,其中
y==91

更新前检查:

        if num == q and num > hold3[0]:

您需要初始化,例如
hold3=[0]

两个代码都找到了906609。但是,第一个代码会用后面的结果覆盖它

你需要检查你找到的当前回文是否比你以前找到的要大,如果没有,就忽略它

对代码稍作调整:

largest = 0
for x in xrange(0, 1000):
    for y in xrange(0, 1000):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q and num > largest:
            largest = num
            hold3 = num, q, x , y
            print(hold3)

print(hold3) # correctly shows 906609 is the largest number

两个代码都可以找到906609。但是,第一个代码会用后面的结果覆盖它

你需要检查你找到的当前回文是否比你以前找到的要大,如果没有,就忽略它

对代码稍作调整:

largest = 0
for x in xrange(0, 1000):
    for y in xrange(0, 1000):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q and num > largest:
            largest = num
            hold3 = num, q, x , y
            print(hold3)

print(hold3) # correctly shows 906609 is the largest number

两个代码都可以找到906609。但是,第一个代码会用后面的结果覆盖它

你需要检查你找到的当前回文是否比你以前找到的要大,如果没有,就忽略它

对代码稍作调整:

largest = 0
for x in xrange(0, 1000):
    for y in xrange(0, 1000):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q and num > largest:
            largest = num
            hold3 = num, q, x , y
            print(hold3)

print(hold3) # correctly shows 906609 is the largest number

两个代码都可以找到906609。但是,第一个代码会用后面的结果覆盖它

你需要检查你找到的当前回文是否比你以前找到的要大,如果没有,就忽略它

对代码稍作调整:

largest = 0
for x in xrange(0, 1000):
    for y in xrange(0, 1000):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q and num > largest:
            largest = num
            hold3 = num, q, x , y
            print(hold3)

print(hold3) # correctly shows 906609 is the largest number

您应该使用
xrange
而不是
x range
x range是一个输入错误,它不会运行otherwise@MartinKonecny谢谢,当我输入这是我忘了把它作为一个。你应该使用
xrange
而不是
x range
x range是一个输入错误,它不会运行otherwise@MartinKonecny谢谢当我输入这是我忘了把它作为一个。你应该使用
xrange
而不是
x range
x range是一个输入错误,它不会运行otherwise@MartinKonecny谢谢,当我输入这是我忘了把它作为一个。你应该使用
xrange
而不是
x range
x range是一个打字错误,它不会运行otherwise@MartinKonecny谢谢,当我打这是我忘了把它作为一个。谢谢!作品完美,从未意识到我正在覆盖最大的。再次感谢!谢谢作品完美,从未意识到我正在覆盖最大的。再次感谢!谢谢作品完美,从未意识到我正在覆盖最大的。再次感谢!谢谢作品完美,从未意识到我正在覆盖最大的。再次感谢!