熟悉的水仙花数来了,,,。。。
原题链接: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也可以算,这个比上面的代码普适得多。