如何使用Python打印水仙花数(Armstrong Numbers)?
水仙花数,也被称作阿姆斯特朗数,是指一个n位数(n>=3)它的每个位上的数字的n次方之和等于它本身。例如,153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3。
在本文中,我们将使用Python语言编写程序,来寻找并打印出所有的水仙花数。
阅读更多:Python 教程
方法一:使用普通循环判断
最简单的方法就是对所有n位数进行循环,并逐个判断其是否为水仙花数。代码如下:
for i in range(100, 1000):
# 分离出百位、十位、个位
a = i // 100
b = (i - a * 100) // 10
c = i % 10
# 判断是否为水仙花数
if a ** 3 + b ** 3 + c ** 3 == i:
print(i)
上述代码中,我们使用了range函数生成了从100到999的所有3位数,然后分离出百位、十位和个位数字,判断是否为水仙花数,如果是,就将其打印出来。
方法二:使用列表推导式一行代码搞定
如果你不想使用普通循环来找出所有的水仙花数,那么可以使用列表推导式,只需一行代码即可完成。
print([x for x in range(100, 1000) if sum(int(i)**3 for i in str(x)) == x])
上述代码中,我们使用了列表推导式,先用range函数生成了从100到999的所有3位数,然后将这些数的各个位上数字的三次方之和用sum函数求和,并将其与原数进行比较,最后返回所有水仙花数。
方法三:使用函数封装
最后,我们可以将上面的代码封装在一个函数中,这样不仅能够直接复用,还能提高代码的可读性。代码如下:
def armstrong_numbers():
return [x for x in range(100, 1000) if sum(int(i)**3 for i in str(x)) == x]
print(armstrong_numbers())
结论
通过上述三种方法,我们都可以轻松的找出所有三位数中的水仙花数。其中,第一种方法使用了普通循环,代码简单易懂;第二种方法使用了列表推导式,代码简洁明了;第三种方法使用了函数封装,提高了代码的可读性和复用性。
极客笔记