Сохранение переменной значения при обнулении
Что мне делать? Я выполняю вот уже второе задание и во второй раз одна и та же ошибка, не дающая мне получать репутацию. Не понимаю, как решить проблему. Выдержка ошибки ниже.
squares(5) should return [1, 4, 9, 16, 25] ( получилось такое: [1, 4, 9, 16, 25]
Дальше демонстрация прикола:
squares(?)
Log
Testing for: 18
[1, 4, 9, 16, 25, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324]
should equal [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324]
Ошибка заключается в повторении предыдущих результатов в начале ответа. У меня код прописан в функции, которую и вызывает сайт, там же прописал list_=[], в этот список пишу ответы и оттуда же вывожу. То есть, я по-умолчанию обнуляю список при каждом вызове функции. Я пытался и внутри функции это делать, но не помогло. Функция ниже:
def squares(n,list_=[]):
for i in range(1,n+1):
list_.append(i**2)
return(list_)
Ответы (2 шт):
Значения по умолчанию нельзя ставить изменяемые, иначе можно напороться на тот факт, что они от вызова функции не будут изменяться (ссылаться на тот же список будут). В вашем случае логично сделать так:
def squares(n,list_=None):
if list_ is None:
list_ = []
for i in range(1,n+1):
list_.append(i**2)
return(list_)
Кто вас учит так делать? Зачем вообще в параметрах список?
def squares(n):
list_ = []
for i in range(1,n+1):
list_.append(i**2)
return(list_)