python查找回文数

这是描述:回文数是一种特殊的数,从左边读和从右边读是一样的,比如123321就是一个回文数。现在给定一个正整数n(n≤54),编程求出一个回文数,要求该回文数的各位数字之和等于n,且该回文数大于10000,小于等于99999。如果有多个满足条件的回文数,输出最小的这个;如果没有满足条件的回文数,输出"Not found"。

例如,给定n=16,满足条件的最小回文数是13831。
再比如给定n=10,满足条件的最小回文数是10801。

以下是我找到的一段代码,基本符合题意但输出为所有满足条件的回文数而不是最小的,希望各位帮忙改改


n = int(input())
for i in range(10000,100000):
    a1 = i % 10   #  个位数
    a2 = i // 10 % 10    #  十位数
    a3 = i // 100 % 10      #  百位数
    a4 = i // 1000 % 10      #  千位数
    a5 = i // 10000  # 万位数
    if a1+a2+a3+a4+a5 == n and a1 == a5 and a2 == a4:
        print(i)
for i in range(100000,1000000):
    a1 = i % 10   #  个位数
    a2 = i // 10 % 10    #  十位数
    a3 = i // 100 % 10      #  百位数
    a4 = i // 1000 % 10      #  千位数
    a5 = i // 10000 % 10  # 万位数
    a6 = i // 100000    #  十万位数
    if a1+a2+a3+a4+a5+a6 == n and a1 == a6 and a2 == a5 and a3 == a4:
        print(i)

img


n = int(input())
found = False

# 枚举五位数
for i in range(10000, 100000):
    a1 = i % 10   # 个位数
    a2 = i // 10 % 10    # 十位数
    a3 = i // 100 % 10      # 百位数
    a4 = i // 1000 % 10      # 千位数
    a5 = i // 10000       # 万位数
    if a1 + a2 + a3 + a4 + a5 == n and a1 == a5 and a2 == a4:
        print(i)
        found = True
        break

# 如果五位数中没有满足条件的回文数,再枚举六位数
if not found:
    for i in range(100000, 1000000):
        a1 = i % 10   # 个位数
        a2 = i // 10 % 10    # 十位数
        a3 = i // 100 % 10      # 百位数
        a4 = i // 1000 % 10      # 千位数
        a5 = i // 10000 % 10  # 万位数
        a6 = i // 100000    # 十万位数
        if a1 + a2 + a3 + a4 + a5 + a6 == n and a1 == a6 and a2 == a5 and a3 == a4:
            print(i)
            found = True
            break

# 如果还是没有满足条件的回文数,输出 "Not found"
if not found:
    print("Not found")

你把满足条件的回文数放入list,然后从list里拿最小的输出就行了,list.sort(),list[0]