В какое правильное место поместить «return»?

#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).