很“有趣”的python问题

123321 是一个非常特殊的数,从左边读和从右边读是一样的,称这样的数为回文数。输人一个正整数n(1≤n≤54),编程求各位数字之和等于n的5位和6位十进制回文数。按从小到大的顺序输出满足条件的整数。如果输人的数不在指定的范围,输出“轻人错误,请重新输入!,如果没有各位之和与输人的数相等的5位和6位回文数,输“无满足条件的数!

while True:
    try:
        n = int(input())
        if 1<=n<=54: break
        print("输入错误,请重新输入!")
    except:
        print("输入错误,请重新输入!")
if n == 1:
    print("无满足条件的数!")
else:
    res = []
    for i in range(1,10):
        for j in range(10):
            for k in range(10):
                if i*2+j*2+k==n:
                    res.append(i*10001+j*1010+k*100)
                elif (i+j+k)*2==n:
                    res.append(i*100001+j*10010+k*1100)
if res:
    print(*sorted(res))
else:
    print("无满足条件的数!")                   

😂😂😂提纲告诉我~这问题不有趣

望采纳

可以使用以下代码来求出各位数字之和等于 n 的 5 位和 6 位十进制回文数:

n = int(input())

if not (1 <= n <= 54):
    print("输入错误,请重新输入!")
else:
    # 枚举 5 位回文数
    for i in range(10000, 100000):
        if str(i) == str(i)[::-1] and sum(int(c) for c in str(i)) == n:
            print(i)

    # 枚举 6 位回文数
    for i in range(100000, 1000000):
        if str(i) == str(i)[::-1] and sum(int(c) for c in str(i)) == n:
            print(i)