水仙花数是指一个n位数 (n>=3),其每个位上数字的n次幂之和恰好等于该数本身。因此,我们可以编写如下的函数来检查一个数字是否为水仙花数:
def is_narcissistic(num):
"""
判断一个数字是否为水仙花数
"""
# 将数字转为字符串,并计算位数
n = len(str(num))
# 定义一个变量用于保存每个位上数字的n次幂之和
narc = 0
# 将该数各位数字的n次幂累加起来
for d in str(num):
narc += int(d) ** n
# 判断是否相等
return narc == num
我们可以对该函数进行测试:
print(is_narcissistic(153)) # True
print(is_narcissistic(370)) # True
print(is_narcissistic(371)) # True
print(is_narcissistic(407)) # True
print(is_narcissistic(1634)) # True
print(is_narcissistic(8208)) # True
print(is_narcissistic(9474)) # True
print(is_narcissistic(9475)) # False
输出:
True
True
True
True
True
True
True
False