Python, почему эта функция sum не работает

#python

#python

Вопрос:

Почему эта функция sum не работает? Ее цель — суммировать переменные элементы в списке

     def sum_list (a_list):
        length= len(a_list)
        counter = 0
        total= 0

        while(counter < length):

             (a_list[counter]  total)          
             total = total   counter
        counter = counter   1
        return total      



#testing the functions
my_list = [3,3,3]
print sum_list(my_list)
  

Комментарии:

1. Есть ли причина, по которой вы не используете встроенную sum функцию?

2. Какое сообщение об ошибке вы получаете? Как вы думаете, что означает это сообщение об ошибке?

3. Это помогло бы, если бы этот код был даже правильно отформатирован. Если вы пытаетесь выполнить этот код на python точно так, как он написан здесь, вы получите ошибки из-за ужасной работы с табуляцией, которая была выполнена.

4. Вам нужно правильно расставить отступы в вашем коде. Кроме того, пожалуйста, сделайте так, чтобы это выглядело менее ужасно: избавьтесь от бесполезных скобок вокруг критерия while, не помещайте случайные операторы в скобки, используйте x = y вместо x = x y и не затеняйте встроенные функции (т. Е. не вызывайте переменную list ; используйте lst или что-то в этом роде вместо этого)

5. @Michael: Даже с исправленным отступом length все еще не определено.

Ответ №1:

Во-первых, length нигде не определено, но вы пытаетесь использовать его в состоянии while. Это вызвало бы ошибку, которую вы, вероятно, видите. Длину вашего списка можно получить с помощью len(list) .

Во-вторых, ваше тело while фактически не использует значения списка: (list[counter] total) ничего не делает, поскольку оно ничему не назначено.

Наконец, total = total counter не добавляет значения, вместо этого он добавляет позиции каждого значения. Итак, в этом примере: 0 1 2 , который, если вы исправите length проблему, о которой я упомянул первым, вы получите 3 вместо правильного значения 9 .

Обновить

Наконец (снова), вы даже не тестируете функцию с помощью своего my_list = [3,3,3] , нет упоминания о функции, которую вы определили выше. Вместо этого вы просто создаете список.