Python打印指数阶乘序列单个加数的代码结果异常修正咨询
代码问题定位与修正方案
原有代码的核心错误
- 冗余嵌套了无意义的内层循环:原本只需要单层循环就能完成逐次计算的逻辑,额外加了
for i in range(x,n+1)的内层遍历,导致每算一个阶乘值,就会重复循环计算从x到n的所有幂次结果,直接造成输出数值数量严重超标、内容完全错位。 - 项的计算逻辑错配:按照序列规则,第j项的固定表达式为
x^j / j!,不需要额外拆分分子、分母为两层独立循环计算,原代码把分子的幂次遍历和分母的阶乘计算强行嵌套,根本没有把同项下的分子和阶乘绑定,最终算出来的数值完全不符合序列定义。 - 输出精度不匹配:原代码直接输出浮点数的完整精度,没有对齐目标输出的5位小数格式,和示例要求的展示效果不一致。
具体调整操作
- 直接删除多余的内层for循环,保留累计计算阶乘的外层单层循环即可。
- 循环到第j轮时,直接使用当前j值计算分子
x**j,除以本轮已经累计完成的j阶乘值,得到当前独立加数。 - 按目标输出的精度要求,将每一项的数值格式化为保留5位小数,和示例展示效果对齐。
调整后可直接运行的代码
x = int(input("Please enter the base number: ")) n = int(input("Please enter the number of terms: ")) factorial = 1 for j in range(1, n + 1): factorial = factorial * j current_term = (x ** j) / factorial # 按5位小数精度输出,每项后拼接+号 print(f"{current_term:.5f}", end='+') # 循环结束后输出换行,避免后续终端提示和输出内容挤在同一行 print()
运行验证效果
输入X=2、N=5时,逐轮计算的结果为:
- 第1项:
2^1 / 1! = 2.0 - 第2项:
2^2 / 2! = 2.0 - 第3项:
2^3 / 3! ≈ 1.33333 - 第4项:
2^4 / 4! ≈ 0.66667 - 第5项:
2^5 /5! ≈0.26667
最终拼接输出完全匹配目标格式:2.0+2.0+1.33333+0.66667+0.26667+
内容的提问来源于stack exchange,提问作者js0110
相关产品推荐
相关产品推荐

