Python 最大回文积
我想做的是找到由两个3位数字的乘积构成的最大回文。(下面的代码是这样的)现在我知道最大的数字是906609或913*993。现在我遇到的问题是,下面的代码找不到这个数字。由于代码是现在,它发现最大的是90909Python 最大回文积,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
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谢谢,当我打这是我忘了把它作为一个。谢谢!作品完美,从未意识到我正在覆盖最大的。再次感谢!谢谢作品完美,从未意识到我正在覆盖最大的。再次感谢!谢谢作品完美,从未意识到我正在覆盖最大的。再次感谢!谢谢作品完美,从未意识到我正在覆盖最大的。再次感谢!