为何Python自定义exp函数仅返回平方值而非幂运算结果?
问题分析与修复
核心问题
你的代码存在三个关键错误:
- 未累积计算结果:循环里每次都用原始的
num做乘法(num1=num*num),相当于反复计算原数的平方,没有把每次的乘积结果叠加累积。比如传入2和5时,循环5次每次都是2*2,最终结果始终是4。 - 未初始化累积变量:
num1没有在循环外设置初始值,逻辑上缺少承载乘积的起始基准。 - 函数无返回值:函数仅打印结果,未用
return返回计算值,所以最后print(exp(2,5))会额外输出None(Python函数默认返回值)。
修复后的代码
def exp(num, pow): result = 1 # 初始化累积变量为1,保证任何数乘1不改变结果 for i in range(pow): # range(pow)等价于range(0,pow,1),写法更简洁 result *= num # 每次将结果与num相乘,实现累积幂运算 return result # 返回计算结果 print(exp(2, 5)) # 输出32
额外说明
- 上述代码天然支持
pow=0的场景,符合数学定义(任何数的0次方为1,循环0次直接返回初始值1)。 - 也可以将
result初始化为num,再循环pow-1次,但初始化为1的逻辑适用性更广。
内容的提问来源于stack exchange,提问作者crimson-wind
相关产品推荐
相关产品推荐

