python3练习100题——013

熟悉的水仙花数来了,,,。。。

原题链接:http://www.runoob.com/python/python-exercise-example13.html

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

我的代码:

def fun():
    num=[]
    for i in range(100,1000):
        a=i//100
        b=(i//10)-10*a
        c=i%10
        if a**3+b**3+c**3==i:
            num.append(i)
    return num
            
if __name__ == '__main__':
    print(fun())

 思考:

题目要求的水仙花数,指的是三位的自幂数。

又实现了个想法,一次算出更多位的自幂数:

def narcissistic():
    count=[]
    li=[]
    for i in range(100,100000):
        s=0
        number=str(i)
        for j in number:        #用了个for循环,代替上述代码取数字的每个位上的数
            s+=int(j)**len(number)
        if s==i:
            count.append(i)
    return count
            
if __name__ == '__main__':
    print(narcissistic())

这样,range内部的自幂数都可以算出来了。

而且改变range也可以算,这个比上面的代码普适得多。

原文地址:https://www.cnblogs.com/drifter/p/9115369.html