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
相关产品推荐
相关产品推荐

