蓝桥杯基础练习。为什么这样写不对?只对了百分之八十.

资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
  1<=n<=54。

n=int(input())
l=[]
for x1 in range(1,10):
    for x2 in range(10):
        if 0<n-2*(x1+x2)<10:
            x3=n-2*(x1+x2)
            l.append(int(str(x1*10001+x2*1010+x3*100)))
        if (n-2*(x1+x2))%2==0 and 0<(n-2*(x1+x2))/2<10:
            x3=(n-2*(x1+x2))/2
            l.append(int(str(x1*100001+x2*10010+x3*1100)[:6]))
l=sorted(l)
for x in l:
    print(x)

八十分的话,题主可能思路上没啥问题,就是一些细节和实现方法上的错误。可以检查检查实现逻辑,也可以看看下面的方法。
可以尝试下述方法:

n = int(input())
m = 100
while m < 1000:
    a = m // 100
    b = (m - a * 100) // 10
    c = m - a*100 - b*10
    if n == 2*(a+b)+c:
        print(a, b, c, b, a, sep='', end='\n')
    m += 1
m = 100
while m < 1000:
    a = m // 100
    b = (m - a * 100) // 10
    c = m - a*100 - b*10
    if n/2 == a+b+c:
        print(a, b, c, c, b, a, sep='', end='\n')
    m += 1

测试:52 输出结果如图:

img

希望对题主有所帮助,望采纳!!