Python中如何在for循环中实现阶乘(!)?补全强数判断代码
解决Python中for循环实现阶乘并判断强数的问题
你需要为每个数字计算阶乘来完成强数判断,这里提供两种适配你代码框架的实现方式:
方法1:手动用for循环实现阶乘
在遍历各位数字的循环内部,嵌套小循环计算当前数字的阶乘:
def sum_factorial_digits(n): res = 0 for i in str(n): a = int(i) # 计算当前数字的阶乘 fact = 1 for num in range(1, a + 1): fact *= num res += fact return res # 完整强数判断逻辑 def check_strong_number(n): if sum_factorial_digits(n) == n: print("It's a Strong Number.") else: print("It's not a Strong Number.") # 测试示例 check_strong_number(145) # 输出:It's a Strong Number.
方法2:使用math模块的factorial函数(更简洁)
Python内置的math.factorial可以直接返回阶乘结果,无需手动编写循环:
import math def sum_factorial_digits(n): res = 0 for i in str(n): a = int(i) res += math.factorial(a) return res # 强数判断函数 def check_strong_number(n): if sum_factorial_digits(n) == n: print("It's a Strong Number.") else: print("It's not a Strong Number.") # 测试 check_strong_number(145)
说明
- 原函数名
exponent不符合功能定位,改为sum_factorial_digits更清晰 - 手动循环实现适合理解阶乘的计算逻辑,
math.factorial则是高效的现成实现 - 补充了完整的强数判断流程,调用后可直接输出结果
内容的提问来源于stack exchange,提问作者O R
相关产品推荐
相关产品推荐

