2015-01-11 64 views
-3

我在Python和编程方面真的很新。 我应该在列表中添加第7号Python 3.4.2列表添加

grades = [ '9', '7', '7', '10', '3', '9', '6', '6', '2' ] 

所以我写了这个代码:

print("1.", grades[0] + grades [1] + grades [2] + grades [3] + grades [4] + grades[5] + grades[6]) 

但只打印出“97710396” 这仅仅是打印出来的数字因为它是一个没有空格的索引。如何添加它们以便我可以打印出51?

+0

数字'9'与_string_''9''不同(请注意引号)。这是你问题的关键。 –

回答

0

您需要将字符串转换为int下做数字运算(而不是字符串串联):

grades = ['9', '7', '7', '10', '3', '9', '6', '6', '2'] 
grades = [int(x) for x in grades] 
print("1.", grades[0] + grades[1] + grades[2] + grades[3] + 
      grades[4] + grades[5] + grades[6]) 

或者,使用sum用列表的片段(有用的,如果要添加的项目是连续项)

grades = ['9', '7', '7', '10', '3', '9', '6', '6', '2'] 
grades = [int(x) for x in grades] 
print("1.", sum(grades[:7])) 
0

这些是个别字符串。你不能在字符串上进行数学运算。

当你对字符串做+时会发生什么情况叫做字符串连接。

即。 '1'+'2'将产生'12'而不是'3'

您需要使用int()将它们转换为整数才能执行算术运算。

var result = int('1') + int('2') 
>> 3 

因此,无论

print("1.", int(grades[0]) + int(grades [1]) + int(grades [2]) + int(grades [3]) + int(grades [4]) + int(grades[5]) + int(grades[6])) 

或时髦的列表理解与list slicingsum

grades = [int(x) for x in grades] 
print("1.", sum(grades[:7])) 
1

没有给予太多了......在 “数字” 在你的名单实际上是string s和python允许你通过将它们连接在一起来添加字符串。所以'a' + 'b' + '9'给你'ab9'。您需要将这些string s转换为int s作为int('19'),因此int('9') + int('7')会给出16

1

转换一切为整数,总结你需要什么,打印:

print("1.",sum(map(int, grades[:7]))) 
-1

您可以使用reducelambda为此,

>>> print("1.",reduce(lambda x,y:int(x)+int(y),grades[:7])) 

当你标记与Python 3这个问题。 x reduce现在是functools模块的一部分。

import functools 
print("1.",functools.reduce(lambda x,y:int(x)+int(y),grades[:7])) 
+0

@Downvoter关心它解释什么是错的? – fledgling

0
sum = 0 
for i in range(0,7): 
    sum += int(grades[i]) 
print(sum) 
0

列表grades[]包含字符串变量。整数是整数。您需要将grades[]列表中的值更改为整数。为此,您需要删除grades[]中值的引号。然后它会输出该列表中所有数字的总和。 希望这会有所帮助。