Какое место нужно поставить «вернуть»? - PullRequest
0 голосов
/ 25 марта 2019

Я - новая птица, следящая за стремлением выучить немного питона. Я действительно запутался в том, где поставить возврат, чтобы закончить цикл. Я понимаю, что код, указанный в ответе, будет работать. Но я не понимаю, почему мой собственный код не будет. Буду очень признателен за помощь! Большое спасибо!

Викторина: Определите процедуру, 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]]) должен быть вне цикла? Я думал, что после прохождения каждого элемента в индексе цикл завершится сам. Это правда?

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Ваш код будет возвращен в самый первый раз, когда цикл будет выполняться независимо от того, что находится вне if / else. Данный ответ возвращается только при выполнении условия

0 голосов
/ 25 марта 2019

Обратите внимание, что по самому определению цикл проходит по всем итерируемым элементам.

В упомянутом выше тесте новый элемент [keword, [url]] должен быть добавлен, если он не был 'Т там раньше.Вы можете только сказать, что после вы проверяете всю структуру данных, следовательно, после цикла.

Обратите внимание, что интерпретатор будет запускать оператор "return" только в том случае, если "ключевое слово" было найдено влюбая из итераций цикла.Его цель - просто остановить выполнение функции после достижения желаемой функциональности.Следовательно, возвращение, которое возвращает «ничто» (точнее, «Нет»).

...