如何编写一个函数,计算并返回从 0 到指定数值的所有阶乘结果

该教程讲解如何定义两个协同工作的函数:一个计算单个整数的阶乘,另一个生成从 0 到给定上限(含)的所有阶乘值,并以列表形式返回。

要实现 RangeFactorial(10) 这样的调用方式并返回 [0!, 1!, 2!, ..., 10!] 的列表,关键在于职责分离:将“计算单个阶乘”与“批量生成阶乘序列”拆分为两个独立、可复用的函数。

首先,定义基础阶乘函数(注意处理边界情况 0! = 1):

def factorial(n):
    if n < 0:
        raise ValueError("阶乘未定义于负

数") result = 1 for x in range(1, n + 1): result *= x return result

接着,定义主函数 range_factorial(n),它接收一个非负整数 n,遍历 range(0, n + 1)(注意:必须包含 0),对每个数调用 factorial(),并将结果逐个追加到列表中,最后返回该列表:

def range_factorial(n):
    """返回 [0!, 1!, 2!, ..., n!] 的列表"""
    result = []
    for i in range(0, n + 1):  # 从 0 开始,到 n(含)
        result.append(factorial(i))
    return result

使用示例:

print(range_factorial(5))
# 输出: [1, 1, 2, 6, 24, 120]

注意事项:

  • 原问题中循环写为 range(1, 10),会遗漏 0! 且上限固定;新函数支持任意 n ≥ 0,且显式包含 0;
  • 函数名采用 snake_case(如 range_factorial)符合 Python 官方 PEP 8 风格指南;
  • 添加了对负数输入的校验,提升鲁棒性;
  • 若需更高性能(尤其对大 n),可考虑使用 math.factorial 或动态规划优化,但本例以清晰教学为目标,保持逻辑直白。

总结:通过组合单一职责函数,我们实现了简洁、可读、可扩展的阶乘序列生成器——只需一次调用 range_factorial(n),即可获得完整结果列表。