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

Python实现power_ranger函数时n=3异常,求排查解决

解决power_ranger函数的浮点数精度问题

问题原因

你当前代码的核心问题是浮点数精度误差:用i**(1/n)计算n次方根时,结果往往不是精确的整数。比如27**(1/3)在Python中实际返回2.9999999999999996,而非精确的3,这会导致(i**(1/n))%1 == 0的判断失效,漏掉符合条件的数。

正确实现思路

换个方向计算:从正整数1开始,依次计算每个数的n次幂,判断结果是否落在区间[a, b]内,直到计算出的n次幂超过b时停止。这种方式完全避开浮点数运算,彻底解决精度问题。

修正后的代码

def power_ranger(n, a, b):
    count = 0
    num = 1
    while True:
        current_power = num ** n
        if current_power > b:
            break
        if current_power >= a:
            count += 1
            print(current_power)
        num += 1
    return count

测试验证

  • 执行power_ranger(3, 1, 27):输出1、8、27,返回3,符合预期。
  • 执行power_ranger(3, 1, 72):输出1、8、27、64,返回4(原代码漏掉了64,就是因为浮点数精度问题)。
  • 执行power_ranger(10, 1, 5):输出1,返回1,正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:15:18