2015-01-11 4 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

Это отдельные строки. Вы не можете делать математику по строкам.

Что происходит, когда вы делаете + на строках, называется конкатенацией строк.

ie. '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 slicing и sum

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

Не давая слишком много ... в "номера" в списке фактически string s, а python позволяет добавлять строки ... путем объединения их друг с другом. Итак 'a' + 'b' + '9' дает вам 'ab9'. Вам необходимо конвертировать эти string s в int с int('19'), поэтому int('9') + int('7') дает 16.

1

Преобразовать все в целое, обобщать то, что вам нужно, распечатать его:

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

Вы можете использовать reduce с lambda для этого,

>>> 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[].Затем он выведет сумму всех номеров в этом списке. Надеюсь, что это поможет.