程序生成回文数

Bri*_*ian 1 python

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)
Run Code Online (Sandbox Code Playgroud)

给了我580085,这不是正确的答案(假设超过900000)...正在http://projecteuler.net/problem=4 ...关于我哪里出错的提示?

Max*_*oel 7

您不需要过复杂的循环来检查数字的回文性质:

# Using extended slice notation to reverse the string
if str(n) == str(n)[::-1]:
    print "Palindrome!"
Run Code Online (Sandbox Code Playgroud)

至于完整的解决方案,您的程序只是寻找一个回文数字.有多个回文数字是3位数的乘积.你想要最大的那些.

(当然,这不是完整的解决方案 - 但如果我们只是给你一个项目欧拉挑战的解决方案就没有乐趣;))