我是python的新手,希望有人可以帮助我解决我的练习中的问题。我正在尝试创建一个函数,该函数将从列表中为每个数字添加1的数字总和。例如,[4,2,3]应返回
的结果((1+2+3+4) + (1+2) + (1+2+3)) = 19
答案 0 :(得分:1)
试试这个:
lists = [4,3,2]
total = 0
for data in lists:
for c in range(data):
n = c+1
total += n
print total
答案 1 :(得分:0)
我不会给你一个答案,但我会告诉你一个过程,可以帮助你打破这个问题(以及你以后会遇到的其他人)。
看看你的目标:
您希望能够传入一个整数列表,例如[4,2,3]
,并将从1开始的总和结果返回到列表的每个整数。
尝试将其分解为尽可能多的部分:
如何将整数列表传递给函数?
如何对列表的每个元素执行某些操作?
只给出一个整数n
(列表的一个元素),如何计算所有数字1 + 2 + ... + n
的总和?
我该如何退回这个号码?
我觉得这个任务最重要的部分是,给定一个整数,计算所有数字的总和。幸运的是,存在一个数学表达式。给定数字n
,小于或等于n
的所有自然数之和为(n)(n+1) / 2
。如果您以前没有看过这个公式,请尝试几次。 (1)(1+1) / 2 = 2 / 2 = 1
,2(2+1)/2 = 6/2 = 3
,(3)(3+1) / 2 = 12/2 = 6
。效果很好。
我关注的下一部分是如何为列表中的每个元素执行此操作。我们迭代列表中每个元素的循环怎么样?这可以通过以下方式完成:
for i in your_list:
... #Enter code you want to happen for every element here
如果您不熟悉这些循环的工作方式,则会对列表的每个元素重复循环,i
(或者您想要的任何变量,_
真的是常见的一个)成为列表的元素。所以,如果你做了
your_list = [5,4,3,6]
for i in your_list:
print(i)
输出将是
5
4
3
6
让我们尝试使用上一步的加法公式。
your_list = [4,2,3]
for i in your_list:
natural_sum = (i)*(i+1)/2
print(natural_sum)
输出:
10
3
6
所以现在我们正在获取我们的附加数字,但我们不想打印它们,我们想要将它们全部添加。这是返回值步骤的一部分。我们想要归还全部金额。我们将此tot_sum
称为total_sum。首先我们将其初始化为零,然后在循环中我们将natural_sum
添加到total_sum中。
tot_sum = 0
your_list = [4,2,3]
for i in your_list:
natural_sum = (i)*(i+1)/2
tot_sum += natural_sum
return tot_sum
然而,返回tot_sum
并没有多大意义,因为我们不在函数中。这是我们发现的第一件事的一部分:我们如何传递函数?好吧,像这样:
def your_sum(your_list):
tot_sum = 0
for i in your_list:
natural_sum = (i)*(i+1)/2
tot_sum += natural_sum
return tot_sum
#Then call it
print(your_sum([4,2,3]))