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

Python入门题求助:排查通过奇数和判断完美平方数的代码错误

问题分析与解决方案

你的代码核心问题是:循环累加了所有不大于n的奇数,而不是题目要求的前k个奇数的和。比如测试n=9时,你的代码会计算1+3+5+7+9=25,显然不等于9,所以返回False,这和题目要求的逻辑完全不符。

方案一:贴合题目逻辑的实现

按照题目描述,累加前k个奇数,直到和等于n(返回True)或者超过n(返回False):

def perfect_square(n):
    if n < 1:
        return False
    total = 0
    current_odd = 1
    while total < n:
        total += current_odd
        current_odd += 2
    return total == n

测试示例:

  • n=1:total=1,返回True
  • n=4:total累加1+3=4,返回True
  • n=9:累加1+3+5=9,返回True
  • n=8:累加至1+3+5+7=16>8,返回False

方案二:利用数学性质简化实现

完美平方数的平方根是整数,所以可以通过计算平方根后验证:

def perfect_square(n):
    if n < 1:
        return False
    square_root = int(n ** 0.5)
    return square_root * square_root == n

这个方法更高效,避免了循环累加的过程,直接通过数学计算完成验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:15:32