介绍
在这个项目中,你将学习如何计算非负整数的阶乘。正整数的阶乘是小于或等于它的所有正整数的乘积,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 文件。按照以下步骤完成此操作:
- 创建一个新文件,并将其保存为
~/project目录下的factorial.py。
cd ~/project
touch factorial.py
- 在
factorial.py文件中,添加以下代码:
def factorial(n):
"""
计算非负整数的阶乘。
参数:
n (int):要计算阶乘的非负整数。
返回:
str:输入整数的阶乘,格式为 "{n}! = {factors_str} = {result}"。
引发:
ValueError:如果输入整数为负数。
"""
## 在这里添加你的代码
这是你将在下一步中实现的 factorial 函数的起点。
实现阶乘函数
在这一步中,你将在 factorial.py 文件中实现 factorial 函数。按照以下步骤完成此操作:
- 在
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 到输入数字的所有数字相乘来计算阶乘,并以所需的格式返回结果。
- 保存
factorial.py文件。
你的 factorial.py 文件现在已完成,你可以使用 factorial 函数来计算任何非负整数的阶乘。
- 要测试你的实现,在终端中运行以下命令:
$ python factorial.py
2! = 1 * 2 = 2
8! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 = 40320
总结
恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。



