Почему for l oop не повторяется по каждому элементу в списке? - PullRequest
0 голосов
/ 23 января 2020

Значение для l oop перебирает только первый элемент в списке. Код работает правильно, когда я использую оператор «print» вместо «return», однако он выводит «None» вместе с желаемым выводом. Не уверен, как заставить код работать, используя функцию возврата.

Текущий код -

def func(num) :
    for x in num:
        return "*"*x




list1 = [3,9,5,2]
print(func(list1))

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Проблема, с которой вы столкнулись, заключается в том, что функция return собирается сразу же выйти из функции со значением, следующим за ней при выполнении ключевого слова return. Таким образом, при запуске for l oop при первой итерации вы возвращаете значение и сразу же выходите из функции. Если вы хотите полностью вернуть список или значение в списке, вы должны заставить функцию возвращать список чисел или, возможно, создать строку, объединяющую все значения, а затем вернуть строку после того, как for l oop итерирует все путь.

0 голосов
/ 23 января 2020

return выходит из функции, что означает, что вы вырываетесь из l oop в первой итерации.

Если вы хотите, чтобы функция «возвращала» несколько значений, вы можете использовать yield (сделать function a generator ):

def func(num):
    for x in num:
        yield "*" * x

list1 = [3, 9, 5, 2]
for result in func(list1):
    print(result)

Как вы можете видеть, вам нужно выполнить итерацию по результату вызова функции.

...