如何计算for循环的输出总和

时间:2019-05-09 20:31:49

标签: python-3.x for-loop sum

我建立了一个for循环,该循环遍历列表的值,将它们作为两个字典的键输入,并将两个键值相乘。

打印时,它会在新行上给出每个相乘的值。

我想将这些值加在一起以获得一个总计,但是到目前为止还不能。

#The list and two dictionaries 

List1 = ['coffee', 'tea' , 'cake' , 'scones' ]  

Dictionary1 ={'coffee' :'4', 'tea' :'2' , 'cake' :'6' , 'scones' :'8' }

Dictionary2 = { 'coffee':'25' , 'tea':'18' , 'cake':'45' , 'scones':'30' }


#the for function which runs through the list

for i in range(len(List1)): 
  t = ((int(Dictionary1[List1[i]])*int(Dictionary2[List1[i]]))) 

#now if you print t the following is printed:

100
36
270
240

我想获得这些值的总和,但是到目前为止,我还没有。

为此,我尝试了sum(t)产生错误:

  

“> TypeError:“ int”对象不可迭代”

我认为这可能是连接错误,所以我尝试了sum(int(t)),但这不起作用。

我还尝试过将其转换为list()“ x = list(t),并用.replace("\n",",")用逗号替换行。

欢迎所有反馈,我认为这可能很容易解决,但我只是没能到达那里-谢谢。

3 个答案:

答案 0 :(得分:1)

如果我以最简单的方式正确思考,您可以分配一个变量,并在每次迭代中将其加起来,例如:

res = 0
for i in range(len(List1)): 
  t = ((int(Dictionary1[List1[i]])*int(Dictionary2[List1[i]])))
  res += t

print(res)

编辑:正如@patrick在this post中建议和讨论的那样,变量名已编辑为sum

答案 1 :(得分:1)

错误是不言自明的:执行TypeError: 'int' object is not iterable时出现t。这意味着t只是一个整数值。 built in sum()需要进行迭代才能对其进行操作。

您需要在每次迭代中将int添加到某些内容中

List1 = ['coffee', 'tea' , 'cake' , 'scones' ]  

Dictionary1 ={'coffee' :'4', 'tea' :'2' , 'cake' :'6' , 'scones' :'8' }

Dictionary2 = { 'coffee':'25' , 'tea':'18' , 'cake':'45' , 'scones':'30' }


# accumulate your values into s
s = 0
for i in range(len(List1)): 
  t = ((int(Dictionary1[List1[i]])*int(Dictionary2[List1[i]]))) 
  s += t

print(s) # print sum

输出:

646

不过,您可以创建生成器理解并也使用built in sum()函数:

print (sum ( int(Dictionary1[a])*int(Dictionary2[a]) for a in List1))

答案 2 :(得分:1)

这是完成任务的列表理解

total = sum(int(Dictionary1[x]) * int(Dictionary2[x]) for x in List1)

输出:

646