You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编写阶乘程序运行结果错误,该如何排查修复?

问题原因

Python 内置的range(start, end)函数生成的整数序列遵循左闭右开规则,即包含start值,不包含end值。你当前代码里写的是range(1, int(n)),当输入n为2时,这个range生成的序列只有1这一个元素,循环执行后factorial = 1 * 1 = 1,和预期的2不符。

修复方法

将range的结束参数调整为int(n) + 1即可,修改后完整代码如下:

n = input()
factorial = 1
if int(n) > 1:
    for i in range(1, int(n)+1):
        factorial = factorial * i
print(factorial)

可选优化

你可以提前将输入转换为整数,避免多次类型转换,同时去掉多余的if判断,代码更简洁:

n = int(input())
factorial = 1
# n<=1时range(2, n+1)为空,循环不执行,factorial保持1,符合0!、1!为1的定义
for i in range(2, n+1):
    factorial *= i
print(factorial)

内容的提问来源于stack exchange,提问作者Tanishk Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 18:36:06