Python 求“水仙花数”- 来自www.codesc.net 的代码挺好

Python打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。编写思路:利用for循环控制100-999个数,每个数分解出个位,十位,百位。可写出以下Python代码:

#与原方法类似

for n in range(100,1000):

    a=n//100

    b=n//10%10

    c=n%10

    if a**3+b**3+c**3==n:

        print(n)

print('*'*20)

#列表解析方法

[print(n) for n in range(100,1000) if (n//100)**3+(n//10%10)**3+(n%10)**3==n]

print('*'*20)

#省事的方法

for n in range(100,1000):

    if sum([x**3 for x in [int(s) for s in str(n)]])==n:

        print(n)

'''

#原程序

for n in range(100,1001):

    i = n / 100

    j = n / 10 % 10

    k = n % 10

    if i * 100 + j * 10 + k == i + j ** 2 + k ** 3:#这里与题意不符,应该是原作者看错题了

        print "%-5d" % n

'''

原文链接:http://www.codesc.net/tech/3640.shtml

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容