#python #for-loop #return
#python #for-цикл #Возврат
Вопрос:
Я новичок в udacity, чтобы немного выучить python. Действительно запутался в том, куда поместить return, чтобы завершить цикл. Я понимаю, что код, приведенный в ответе, будет работать. Но я не понимаю, почему мой собственный код этого не сделал бы. Я был бы действительно признателен за некоторую помощь! Большое вам спасибо!
Тест заключается в следующем: определите процедуру add_to_index, которая принимает 3 входных параметра:
- индекс: [[,[,…]],…]
- ключевое слово: String
-
url: Строка
Если ключевое слово уже есть в индексе, добавьте URL-адрес в список URL-адресов, связанных с этим ключевым словом.
Если ключевого слова нет в индексе, добавьте запись в индекс: [ключевое слово,[url]]
мой код:
index = []
def add_to_index(index,keyword,url):
for element in index:
if element[0] == keyword:
element[1].append(url)
else:
index.append([keyword,[url]])
return index
и данный ответ:
index = []
def add_to_index(index,keyword,url):
for element in index:
if element[0] == keyword:
element[1].append(url)
return
index.append([keyword,[url]])
почему index.append([ключевое слово,[url]]) должен быть вне цикла? Я думал, что после прохождения каждого элемента в индексе цикл завершится сам. Это правда?
Ответ №1:
Ваш код вернет результат при самом первом выполнении цикла, независимо от того, что находится за пределами if / else. Данный ответ возвращается только при выполнении условия
Ответ №2:
Пожалуйста, обратите внимание, что цикл, по самому своему определению, перебирает все повторяющиеся элементы.
В упомянутом выше тесте следует добавить новый элемент [ключевое слово,[url]], если его там раньше не было. Вы можете сказать это только после проверки всей структуры данных, следовательно, после цикла.
Обратите внимание, что интерпретатор выполнит инструкцию «return» только в том случае, если «ключевое слово» было найдено на любой из итераций цикла. Его цель — просто остановить выполнение функции, как только будет достигнута желаемая функциональность. Отсюда возврат, который возвращает «ничего» (точнее, None).