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

Python前n个自然数平方和代码执行异常:手动输入与复制结果不同

问题原因分析

首先看你提供的代码,核心问题出在return语句的缩进上:

  • 如果return sm和sm += i ** 2在同一缩进级别(也就是for循环内部),函数会在第一次循环时就执行return:i=0时,sm变成0+0²=0,直接返回这个值,所以结果是0。
  • 如果return sm缩进在for循环外面(和for语句同一级别),函数会完成整个for循环(遍历0到4的所有数),计算0²+1²+2²+3²+4²=30,再返回结果,这才是正确的逻辑。

你遇到的差异,本质是手动输入和复制粘贴的代码缩进不一致:

  • 手动输入时,你误把return sm缩进进了for循环内部,导致逻辑错误,输出0。
  • 从网站复制的代码,实际return sm是在for循环外面的,所以能得到正确结果30。

修正后的正确代码

def sum(n):
    sm = 0
    for i in range(n + 1):
        sm += i ** 2
    return sm  # 这里缩进在for循环外面

n = 4
print(sum(n))  # 输出30

Python是靠缩进划分代码块的语言,缩进错误直接会改变代码的执行逻辑,写代码时一定要注意缩进的层级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:06:19