1.题目:
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。如: 1^3+5^3+3^3=153, 8^4+2^4+0^4+8^4 = 8208.
求100~9999之间所有的水仙花数
2.源码:
[n for n in xrange(100, 10000) if (lambda sn: sum(int(x) ** len(sn) for x in sn) == n)(str(n))]
3.思路:拆开 -> 乘方 -> 加和 -> 比较.
1.题目:
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。如: 1^3+5^3+3^3=153, 8^4+2^4+0^4+8^4 = 8208.
求100~9999之间所有的水仙花数
2.源码:
[n for n in xrange(100, 10000) if (lambda sn: sum(int(x) ** len(sn) for x in sn) == n)(str(n))]
3.思路:拆开 -> 乘方 -> 加和 -> 比较.
热门评论
看完题目,首先自己不看答案直接想解决办法,如下:
然后再看答案,惊喜的发现,老师也是用str()来拆数字的。
还有,字符串可以直接迭代
自己再默写一遍
对lambda的理解加深了
n for n in xrange(100, 10000)这个两个n分别代表什么呢?
老师,最后的str(n)是把n的数字拆成字符串传给sn了么?这一步太快了,没明白过来~~