Skip to main content
 首页 » 编程设计

python之产生回文数的程序

2025年05月04日14daizhj

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 挑战的解决方案,那就没有意思了;))