2015-03-08 2 views
0

Я использую open(filename), чтобы открыть файл, содержащий номера 73, 85, 66, 0 и 99.Как добавить элементы в список с помощью цикла for?

Я добавляю каждый номер в списке под названием values. Теперь я хочу получить среднее значение всех чисел. Я пытаюсь суммировать значения, используя переменную с именем sum, а затем распечатать сумму.

values = [] 
for i in values: 
    sum = sum + i 
print sum: 

Этот код дает мне следующее сообщение об ошибке: TypeError: unsupported operand type(s) for +: 'builtin_function_or_method' and 'int'

+0

Вы знаете, как читать числа из файла в значения? Вы упомянули об этом в своем вопросе, но вы не показываете, как вы это делаете в своем коде. Кроме того, как упоминает Pikamander2, вы не должны иметь ':' в конце вашего оператора 'print'. –

ответ

2

Вы с помощью sum в качестве имени переменной, которую вы не инициированную. Но sum - это имя встроенной функции, поэтому вы не должны использовать ее как имя переменной, потому что это может привести к таким проблемам. :) Ваш код говорит Python добавить целые числа в values к функции, поэтому он жалуется. Но это работает:

values = [1, 2, 3, 4] 

total = 0 
for i in values: 
    total = total + i 
print total 

выход

10 

FWIW, приведенный выше код будет работать, если мы использовали sum вместо total сохранить текущую накопленную сумму, потому что он получает инициализирован перед началом из петля. Но это не очень хорошая идея, поскольку это означает, что вы не можете получить доступ к надлежащей функции sum(), если вам это нужно позже. Кроме того, это немного запутывает людей, читающих ваш код.


Или вы могли бы просто использовать функцию sum(), так как она предназначена для добавления вместе содержимого итератора:

print sum(values) 

выходного

10 
0

Когда вы звоните sum = sum + i, вы еще не дали sum значение. Вы не можете добавить 1 к неопределенной переменной.

Заявка sum = 0 перед блоком кода, и это должно устранить проблему.

Кроме того, после утверждения печати не должно быть двоеточия. Это была опечатка, или это действительно в вашем коде?

Смежные вопросы