Как вернуть полный цикл в функцию - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь запустить For loop в функции, но когда я вызываю функцию, возвращается только первое значение.

Я пытался завершить цикл с print вместоreturn, который получает правильный результат (он печатает каждое значение в цикле), но означает, что none добавляется к ответу, так как теперь есть двойная печать.

ОБРАТИТЕ ВНИМАНИЕ: В этих примерах одинможно было бы просто напечатать «значение» напрямую, но я хочу иметь возможность выполнить цикл for, чтобы добавить сложность позже.

Функция, заканчивающаяся на return, выводит только первое значение 1013 * из `For loop``:

def thing():  
   value = ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 )
   for x in value:
    return x

print(thing())
# 1 

Эта функция использует print и дает правильный результат, за исключением добавления none из-за двойной печати. ​​

def thing1():
   value = ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 )
   for x in value:
     print(x)

print(thing1())

>>>  OutPut:
1
2
3
4
5
6
7
8
9
10
None

Как именно я могу получить второй результат (полный печатный цикл всех значений) при удалении «Нет»?

1 Ответ

0 голосов
/ 12 мая 2019

После запуска return функция прекращает оценку. Если вы хотите вернуть все в цикле for, верните список его результатов:

ret_vals = []
for x in value:
    ret_vals.append(x)

return(ret_vals)    

Вы можете печатать их на новых строках, как вы указали, вот так:

out = func()
for x in out:
    print(x)
...