#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]
, нет упоминания о функции, которую вы определили выше. Вместо этого вы просто создаете список.