Python 判断一个数是否为水仙花数

Document 对象参考手册 Python3 实例

水仙花数(Narcissistic number)是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。

下面是一个 Python 程序,用于判断一个数是否为水仙花数:

实例

def is_narcissistic_number(num):
    # 将数字转换为字符串,方便逐位处理
    num_str = str(num)
    # 获取数字的位数
    n = len(num_str)
    # 计算每个位上的数字的 n 次幂之和
    sum_of_powers = sum(int(digit) ** n for digit in num_str)
    # 判断是否等于原数
    return sum_of_powers == num

# 测试
number = 153
if is_narcissistic_number(number):
    print(f"{number} 是水仙花数")
else:
    print(f"{number} 不是水仙花数")

代码解析:

  1. is_narcissistic_number 函数接受一个整数 num 作为参数。
  2. num_str = str(num) 将整数转换为字符串,以便逐位处理。
  3. n = len(num_str) 获取数字的位数。
  4. sum_of_powers = sum(int(digit) ** n for digit in num_str) 计算每个位上的数字的 n 次幂之和。
  5. return sum_of_powers == num 判断计算得到的和是否等于原数,如果相等则返回 True,否则返回 False
  6. 在测试部分,我们测试了数字 153,并输出结果。

输出结果:

153 是水仙花数

Document 对象参考手册 Python3 实例