实现幂运算的Python代码输入负数值时运行结果不符合预期,是什么原因?
代码问题原因
- 核心逻辑错误出现在负数参数的计算分支:你期望计算
10^n,但负数分支里额外加了一层倒数运算,导致最终结果是预期值的倒数。 - 以输入n=-2为例,实际运行计算过程如下:
- 进入else分支时n=-2
- 先计算
10**n即10**(-2),结果为0.01 - 再执行
1 / 0.01得到100.0,和实际输出一致,刚好和预期的0.01相反。
修复方案
有两种等效的修改方式,都可以得到正确结果:
方案1:直接返回幂运算结果
Python原生支持负数指数的幂运算,不需要额外做倒数处理,直接统一返回10**n即可:
a = input("Enter the number to determine the exponent? ") def expo(n): print(f'Value of n is {n}') if n >= 0: return 10**n else: print(f'In this loop') return 10**n e = expo(int(a)) print(f'Value of exponent of {a} is {e}')
方案2:对负数取绝对值后做倒数
如果你需要保留倒数的计算逻辑,要对n取绝对值后再计算:
a = input("Enter the number to determine the exponent? ") def expo(n): print(f'Value of n is {n}') if n >= 0: return 10**n else: print(f'In this loop') return 1/(10**abs(n)) e = expo(int(a)) print(f'Value of exponent of {a} is {e}')
内容的提问来源于stack exchange,提问作者SRK
相关产品推荐
相关产品推荐

