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
'''