попытка вернуть элементы из списка по одному - PullRequest
0 голосов
/ 01 августа 2020

поэтому я пытаюсь создать приложение, которое печатает одно и то же предложение с разными именами, поэтому с помощью функции я хочу вернуть имена (чтобы использовать их в другой функции), и оно всегда возвращает только имя и заканчивается. Я пробовал решить эту проблему разными способами и не смог найти решение, которое может помочь?

def next_person(list):
    i = 0
    while i < len(list):
        if i < len(list):
            return list[i]
        i += 1

names = ("nike", "dan", "someone", "elzein", "joe")

print(next_person(names))

Ответы [ 4 ]

1 голос
/ 01 августа 2020

Функция вам вообще не нужна. list поддерживает протокол итератора python. Нет необходимости заключать его во что-то, что пытается сделать то же самое.

0 голосов
/ 01 августа 2020

Вызывая return, вы завершаете функцию, если хотите, чтобы ваша функция выполняла то, что вы говорите, ее нужно было бы записать как

def next_person(list):
    i = 0
    while i < len(list):
        if i < len(list):
            print(list[i])
        i += 1

names = ("nike", "dan", "someone", "elzein", "joe")

next_person(names)

, если вы хотите вернуть сгенерированные предложения

def next_person(list):
    i = 0
    sentences = []
    while i < len(list):
        if i < len(list):
           sentences.append(list[i])
        i += 1
    return(sentences)

names = ("nike", "dan", "someone", "elzein", "joe")

mySentences = next_person(names)
print(mySentences)

Output :
["nike", "dan", "someone", "elzein", "joe"]

0 голосов
/ 01 августа 2020

Конечно, есть более простые способы сделать это, но если вам нужно возвращать элементы по одному генератор - это то, что вам нужно

, вы можете использовать карту для печати значения и списка вызовов к оценить it

def next_person(list):
    i = 0
    while i < len(list):
        if i < len(list):
             yield list[i]
        i += 1

names = ("nike", "dan", "someone", "elzein", "joe")

list(map(print, next_person(names)))
0 голосов
/ 01 августа 2020

Я настоятельно рекомендую использовать для l oop:

def next_person(list):
        for a in list:
                print("This is my sentence : {}".format(a))

names = ["nike", "dan", "someone", "elzein", "joe"]

next_person(names)

Output :
This is my sentence : nike
This is my sentence : dan
This is my sentence : someone
This is my sentence : elzein
This is my sentence : joe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...