使用for...in range()实现平方和计算的Python代码修复求助
修复平方求和的Python代码问题
嘿,我看你在写平方求和的代码时遇到了问题,咱们来一步步搞定它!
原代码的核心错误
你的代码里,循环内部的两行赋值完全把total的累加逻辑搞砸了:
total = ctr**2 total = (ctr + 1)**2
这两行不是把平方值加到total里,而是直接覆盖了total的当前值。每次循环都会丢掉之前的累加结果,最后total只会保留最后一次循环里的(ctr + 1)**2——比如当N=2时,最后得到的是3²=9,而不是正确的0+1+4=5。
修复后的代码
把覆盖赋值改成累加操作,同时删掉那行多余的(ctr + 1)**2赋值,就能得到正确结果:
import sys N = int(sys.argv[1]) total = 0 for ctr in range(0, N+1): total += ctr**2 # 把当前数的平方累加到total中,等价于 total = total + ctr**2 print(str(total))
测试验证
当你运行python your_script.py 2时,代码会依次计算:
- ctr=0:total = 0 + 0² = 0
- ctr=1:total = 0 + 1² = 1
- ctr=2:total = 1 + 2² = 5
最后输出5,完全符合你的预期。
额外小技巧(可选)
如果想让代码更简洁,也可以用Python内置的sum()函数结合生成器表达式,不过既然要求用for...in range(),上面的循环写法就完全够用啦:
import sys N = int(sys.argv[1]) total = sum(ctr**2 for ctr in range(N+1)) print(total)
内容的提问来源于stack exchange,提问作者AndreaST
相关产品推荐
相关产品推荐

