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

Python while循环求平方和问题:为何返回输入数的立方?

问题分析与修复

嘿,我来帮你拆解下这个问题~

错误原因

你的代码之所以返回输入数的立方,核心问题出在循环里的计算逻辑:

y = (n**2)+y

你每次循环都在累加固定的n的平方,而不是当前循环变量x的平方。再看循环次数:x从0开始,直到x < n停止,一共会执行n次循环(比如n=3时,x取0、1、2,共3次)。那n次累加n²的结果就是n * n² = n³,这就解释了为什么返回的是立方啦!而且你的循环变量x其实根本没参与到平方计算里,完全是个“凑次数”的工具人😅

修复方法

要计算n范围内所有数的平方和,首先得明确你要的是0到n-1的平方和,还是1到n的平方和?我给你两种情况的修复方案:

情况1:计算0到n-1的平方和

只需要把累加的n**2改成x**2即可,这样每次循环都会把当前x的平方加到总和里:

def problem2(n):
    x = 0
    y = 0
    while x < n:
        y = x**2 + y  # 这里改成x的平方
        x += 1
    return y

比如n=3时,计算的是0²+1²+2²=0+1+4=5,运行代码返回5,符合预期。

情况2:计算1到n的平方和

如果你的需求是从1开始到n的平方和,那需要调整x的初始值和循环条件:

def problem2(n):
    x = 1
    y = 0
    while x <= n:  # 循环条件改成x小于等于n
        y = x**2 + y
        x += 1
    return y

比如n=3时,计算1²+2²+3²=1+4+9=14,运行代码返回14,正确。

另外,其实你还可以用更简洁的写法(比如for循环或者数学公式),不过既然你在练习while循环,上面的修复就完全够用啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:36:02