Python 将从1到n的所有数字相加,并打印其总和
我是python新手,正在尝试编写一个程序来添加从1到n的所有数字,并打印它们的总和。谁能告诉我我的代码有什么问题吗。我得到1作为输出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):
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,您不需要它。