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

打印前n个整数和的代码出现NameError,如何修复?

修复你的求和代码:解决NameError并修正逻辑

首先,你遇到的NameError是因为你用了Python 2的raw_input()函数,但现在大多数开发环境用的是Python 3,Python 3里已经把这个函数改名为input()了,所以解释器找不到raw_input这个名称,这就是报错的核心原因。

不过除了这个语法错误,你的代码逻辑也完全偏离了“计算前n个整数的和”的目标,我们一步步来修复:

步骤1:解决NameError

把代码里的n = int(raw_input())改成n = int(input()),这样解释器就能识别输入函数,NameError就会消失。

步骤2:修正函数逻辑与参数问题

你的函数定义了参数n,但又在函数内部重新通过输入覆盖n,这会让函数的参数失去意义。另外,原代码里的j = i + 1、doublesum = i + j - n这些计算完全不是求前n个整数和的逻辑——前n个整数的和可以用数学公式n*(n+1)/2快速计算,也可以用循环累加实现。

修复后的代码(两种可选方式)

方式1:用数学公式(更高效)

def printsum(n):
    total = n * (n + 1) // 2  # 用整数除法避免出现浮点数结果
    print(total)

# 如果你想让用户输入n,建议在函数外部获取参数
n = int(input("请输入整数n: "))
printsum(n)

方式2:用循环累加(更直观)

def printsum(n):
    total = 0
    for i in range(1, n+1):
        total += i
    print(total)

n = int(input("请输入整数n: "))
printsum(n)

原代码逻辑的问题说明

原代码里的计算逻辑完全和“前n个整数求和”无关:

  • j = i + 1只是取当前循环变量的下一个数
  • doublesum = i + j - n这个式子没有任何求和相关的意义
  • 最终的doublesum / 2自然也得不到你想要的结果

所以除了修复NameError,必须修正求和逻辑,才能得到正确的前n个整数的和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:12:36