如何编写Python函数判断输入参数是否为Armstrong数
编写一个函数,验证其接收的参数是否为Armstrong数。Armstrong数指该数等于其各位数字的幂次之和(幂次为数字的总位数)。
你现有的四位数判断逻辑存在三个可优化的点:
- 整数拆分时用了普通除法
/会得到浮点数,会导致各位计算出现误差,应该用整数除法// - 硬编码了四位的拆分规则,没法适配1位、3位、5位等任意长度的阿姆斯特朗数判断
- 语法层面
else后缺少冒号,运行会直接报错
以下是通用的实现代码:
def is_armstrong(num): # 转换为字符串方便取每一位,同时获取数字总位数 num_str = str(num) digit_length = len(num_str) # 计算各位数字的digit_length次幂之和 total = sum(int(digit) ** digit_length for digit in num_str) return total == num # 输入输出交互逻辑 n = int(input("Enter a number: ")) if is_armstrong(n): print("Its an Armstrong number!") else: print("Its Not an Armstrong")
该实现支持任意正整数的阿姆斯特朗数校验,无需根据数字位数修改拆分逻辑,1位的1~9、3位的153、4位的1634等经典阿姆斯特朗数都可以正常识别。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

