Python 中的阶乘计算

PythonBeginner
立即练习

介绍

在这个项目中,你将学习如何计算非负整数的阶乘。正整数的阶乘是小于或等于它的所有正整数的乘积,0 的阶乘是 1。

👀 预览

$ python factorial.py
2! = 1 * 2 = 2
8! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 = 40320

🎯 任务

在这个项目中,你将学习:

  • 如何在 ~/project 目录中创建一个 factorial.py 文件
  • 如何实现 factorial 函数来计算非负整数的阶乘
  • 如何通过引发 ValueError 来处理负输入,并显示提示信息 "请输入一个非负整数"

🏆 成果

完成这个项目后,你将能够:

  • 理解阶乘的概念以及如何计算它
  • 编写一个 Python 函数来计算非负整数的阶乘
  • 处理输入错误并显示适当的错误消息
  • 应用你所学的 Python 编程知识来解决一个实际问题

创建 factorial.py 文件

在这一步中,你将在 ~/project 目录中创建 factorial.py 文件。按照以下步骤完成此操作:

  1. 创建一个新文件,并将其保存为 ~/project 目录下的 factorial.py
cd ~/project
touch factorial.py
  1. factorial.py 文件中,添加以下代码:
def factorial(n):
    """
    计算非负整数的阶乘。

    参数:
        n (int):要计算阶乘的非负整数。

    返回:
        str:输入整数的阶乘,格式为 "{n}! = {factors_str} = {result}"。

    引发:
        ValueError:如果输入整数为负数。
    """
    ## 在这里添加你的代码

这是你将在下一步中实现的 factorial 函数的起点。

实现阶乘函数

在这一步中,你将在 factorial.py 文件中实现 factorial 函数。按照以下步骤完成此操作:

  1. factorial.py 文件中,将 ## 在这里添加你的代码 注释替换为以下代码:
def factorial(n):
    """
    计算非负整数的阶乘。

    参数:
        n (int):要计算阶乘的非负整数。

    返回:
        str:输入整数的阶乘,格式为 "{n}! = {factors_str} = {result}"。

    引发:
        ValueError:如果输入整数为负数。
    """
    if n < 0:
        raise ValueError("请输入一个非负整数。")
    elif n == 0:
        return "0! = 1"
    else:
        result = 1
        factors = []
        for i in range(1, n + 1):
            result *= i
            factors.append(str(i))
        factors_str = " * ".join(factors)
        return f"{n}! = {factors_str} = {result}"

## 部分示例输出:
print(factorial(2))
print(factorial(8))

这段代码实现了计算非负整数阶乘的功能。它通过引发 ValueError 来处理负输入的情况,对于输入为 0 的情况则返回 "0! = 1"。对于所有其他非负整数,它通过将从 1 到输入数字的所有数字相乘来计算阶乘,并以所需的格式返回结果。

  1. 保存 factorial.py 文件。

你的 factorial.py 文件现在已完成,你可以使用 factorial 函数来计算任何非负整数的阶乘。

  1. 要测试你的实现,在终端中运行以下命令:
$ python factorial.py
2! = 1 * 2 = 2
8! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 = 40320

总结

恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。

✨ 查看解决方案并练习✨ 查看解决方案并练习