python输出所有的对称的四位数,每个数之间用空格间隔

python输出所有的对称的四位数,每个数之间用空格间隔,朋友们,帮忙解决一下

def is_duicheng(num):
    number = str(num)
    if len(number) != 4:
        return False
    return number[0] == number[3] and number[1] == number[2]

nums = []
for i in range(1000, 10000):
    nums.append(int(i))
duicheng_list = []
for num in nums:
    if is_duicheng(num):
        duicheng_list.append(num)
for d in duicheng_list:
    print(d, end=' ')

运行结果:

img

img

代码如下:

for i in range(1000, 9999):
    a = i % 10;
    b = int(i / 10) % 10;
    c = int(i / 100) % 10;
    d = int(i / 1000) % 10;
    if (a == d and c == b):
        print("%d "%i)


一行代码就搞定:

print(*[i for i in range(1000,10000) if str(i)==str(i)[::-1]])

1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 2332 2442 2552 2662 2772 2882 2992 3003 3113 3223 3333 3443 3553 3663 3773 3883 3993 4004 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005 5115 5225 5335 5445 5555 5665 5775 5885 5995 6006 6116 6226 6336 6446 6556 6666 6776 6886 6996 7007 7117 7227 7337 7447 7557 7667 7777 7887 7997 8008 8118 8228 8338 8448 8558 8668 8778 8888 8998 9009 9119 9229 9339 9449 9559 9669 9779 9889 9999

num = [str(i) for i in range(1000,10000) if str(i)[:2][::-1]==str(i)[2:]]
print(' '.join(num))

或者

num = [str(i)+str(j)*2+str(i) for i in range(1,10) for j in range(10)]
print(' '.join(num))

第二种方法直接字符串拼接,不用逐个检查每个数,速度更快一些。
结果:

1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 2332 2442 2552 2662 2772 2882 2992 3003 3113 3223 3333 3443 3553 3663 3773 3883 3993 4004 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005 5115 5225 5335 5445 5555 56333 3443 3553 3663 3773 3883 3993 4004 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005 5115 65 5775 5885 5995 6006 6116 6226 6336 6446 6556 6666 6776 6886 6996 7007 7117 7227 7337 7447 7557 7667 7777 7887 799557 7667 7777 7887 7997 8008 8118 8228 8338 8448 8558 8668 8778 8888 8998 9009 9119 9229 9339 7 8008 8118 8228 8338 8448 8558 8668 8778 8888 8998 9009 9119 9229 9339 9449 9559 9669 9779 9889 9999