import math
thevalue = 0
for x in range (100,999):
for y in range (100,999):
mynum=x*y
mynum_str=str(mynum)
for z in range(0,math.floor(len(mynum_str)/2)):
if mynum_str[0+z] != mynum_str[len(mynum_str)-1-z]:
break
else:
if (len(mynum_str)-1-z) -1 == z:
thevalue = mynum
print(thevalue)
给我 580085 这不是正确答案(假设超过 900000)... 正在处理 http://projecteuler.net/problem=4 ...关于我哪里出错的提示?
请您参考如下方法:
您不需要过于复杂的循环来检查数字的回文性质:
# Using extended slice notation to reverse the string
if str(n) == str(n)[::-1]:
print "Palindrome!"
至于完整的解决方案,您的程序只是在寻找一个 回文数。有不止一个回文数是 3 位数字的乘积。您想要其中最大的一个。
(当然,这不是完整的解决方案——但如果我们只是为您提供解决项目 Euler 挑战的解决方案,那就没有意思了;))
