如何使用Python打印水仙花数(Armstrong Numbers)?

如何使用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())

结论

通过上述三种方法,我们都可以轻松的找出所有三位数中的水仙花数。其中,第一种方法使用了普通循环,代码简单易懂;第二种方法使用了列表推导式,代码简洁明了;第三种方法使用了函数封装,提高了代码的可读性和复用性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程