Python 将从1到n的所有数字相加,并打印其总和

Python 将从1到n的所有数字相加,并打印其总和,python,Python,我是python新手,正在尝试编写一个程序来添加从1到n的所有数字,并打印它们的总和。谁能告诉我我的代码有什么问题吗。我得到1作为输出 def problem1_3(num): sum_= 0 num = int(num) for i in range(1,num): sum_ = sum_ + i print(sum_) i+=1 return(sum_) def problem1_3(num):

我是python新手,正在尝试编写一个程序来添加从1到n的所有数字,并打印它们的总和。谁能告诉我我的代码有什么问题吗。我得到1作为输出

def problem1_3(num):
    sum_= 0
    num = int(num)
    for i in range(1,num):
        sum_ = sum_ + i
        print(sum_)
        i+=1
        return(sum_)
def problem1_3(num):
    sum_= 0
    num = int(num)
    for i in range(1,num+1):
        sum_ = sum_ + i
        #print(sum_)
        # i+=1
    return(sum_)

ans = problem1_3(5)
print(ans)

您将在函数的第一次迭代中返回sum_u。您希望完成for循环,然后才返回它。了解更多信息,它们基于缩进,与其他一些语言不同。

您在代码中犯的两个错误:

1-您将i递增+1,但不必这样做,因为python将自动递增循环变量

2-在for循环中返回sum_uu变量,这就是为什么得到1作为输出

def problem1_3(num):
    sum_= 0
    num = int(num)
    for i in range(1,num):
        sum_ = sum_ + i
        print(sum_)
        i+=1
        return(sum_)
def problem1_3(num):
    sum_= 0
    num = int(num)
    for i in range(1,num+1):
        sum_ = sum_ + i
        #print(sum_)
        # i+=1
    return(sum_)

ans = problem1_3(5)
print(ans)
输出:

15
如果不必使用for循环,最好使用递归

def problem1_3(num : int) -> int:
    if num == 1:
        return 1
    else:
        return num + problem1_3(num-1)
              # 5  + problem1_3(4)
              # 5  +       4      + problem1_3(3)
              # 5  +       4      +       3      + problem1_3(2)
              # 5  +       4      +       3      +       2      + problem1_3(1)
              # 5  +       4      +       3      +       2      +     1

如果必须使用循环。 你的问题是你什么时候还钱。您应该先完成循环,然后在循环之外返回总和:

def problem1_3(num : int) -> int:
    sum_ = 0
    for i in range(1, num+1):
        sum_ += i
    return (sum_)

因此,您正在返回for循环,因此它不会进入完成阶段

但是如果你想用一种更简单更简洁的方法来编写这个函数

def problem1_3(num):
    return sum(range(num)) #for up to, but not including num

因为您已经有了range函数,所以range会生成一个数字列表。所以范围5是[0,1,2,3,4] 把它们加起来会得到1+2+3+4


这只是做同样事情的一个较短的方法。

你回来得太早了。取消return语句的意图并允许for循环完成return语句的缩进使它在第一次通过时退出循环中的函数。此外,您的范围将排除最后一个值,您需要range1、num+1,并且不需要增加i,因为for循环在范围内运行时已经为您这样做了。最好编写一个只计算和的函数,然后打印调用该函数的结果。也就是说,将计算和表示分开。删除i+=1,您不需要它。