Python练习(6)

问题描述

反序数,即有这样成对的数,其特点是其中一个数的数字排列顺序完全颠倒过来,就变成另一个数,如102和201,36和63等,简单的理解就是顺序相反的两个数,我们把这种成对的数互称为反序数。反序数唯一不可能出现以0结尾的数。
一个3位数各位上的数字都不相同,它和它的反序数的乘积是280021,这个3位数应是多少?

代码

def revernum(n):                        
    b=str(n)
    a=[int(j) for j in b]                      #把各位数字取出来放到列表里,int(j)以整数而非字符形式保存
    x=reduce(lambda x, y: x*10+y, a[::-1])     #用reduce函数,算出反序数,a[::-1]--->从后往前取
    return x

for i in range(100,999):
    m=revernum(i)
    if m*i==280021:
        print i
#结果
367
763

猜你喜欢

转载自blog.csdn.net/qq_43243022/article/details/82918506