2015-01-11 108 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[]中值的引號。然後它會輸出該列表中所有數字的總和。 希望這會有所幫助。