@florsd

Python / Generator как это решить?

Определите генератор, который будет постепенно генерировать элементы числового ряда:
s(k)=k/4, где k — порядковый номер
def generator():
    pass


gen = generator()
gen = (s(k)/4 for k in range(10)):
    print(next(gen))

что не так?
переделан с этого шаблона
def generator():
    pass


gen = generator()
for _ in range(10):
    print(next(gen))
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
@AVKor
def generator():
    for k in range(10):
        yield k/4

gen = generator()
for _ in range(10):
    print(next(gen))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Для начала - выучить азы pyhon.
def generator():
    pass
gen = generator()

Смысл объявления пустой функции?

gen = (s(k)/4 for k in range(10)):
Во-первых, конструкция вида [литерал]([аргументы]) всегда будут восприниматься как вызов функции с названием [литерал] аргументами [аргументы]. А объявленой функции с именем s у вас нет.
Далее непонятно, зачем у вас двоеточие и print(next(gen)) с отступом.
И к тому-же, next(gen) не будет работать, т.к. generator() ничего не возвращает.
Если пытались изменить код, то зачем? Судя по шаблону, вам нужно написать генератор в соответствующей функции generator() и уже по нему итерироваться.
def generator():
    pass


gen = generator()
for _ in range(10):
    print(next(gen))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы