Прямо генератор нужен, или это просто для красного словца, а на самом деле - обычный школьный цикл?
С генератором это выглядит так: def oddgen(maxn):
for n in range(1, (maxn + 1) | 1, 2): yield n
# использовать так:
for k in oddgen(100): print(k)
# или так:
print(*oddgen(100), sep = '\n') Можно генератор записать проще: def oddgen(maxn): return range(1, (maxn + 1) | 1, 2) Или даже так: oddgen = lambda maxn: range(1, (maxn + 1) | 1, 2)
Пояснения: (maxn + 1) | 1 - это вычисление ближайшего нечётного числа, большего maxn
(нужно как верхняя граница цикла)
range(start, end, step) - генератор чисел, начиная со start, не доходя до end, и с шагом step
(для нечётных чисел, естественным образом, используем шаг 2) Первый вариант функции в цикле обходит всё множество нечётных чисел и возвращает их в возрастающем порядке. Но поскольку это - то же самое, что делает range с нужными параметрами, второй вариант просто возвращает генератор, созданный range. Третий вариант делает то же самое, что и второй.
И естественно, можно указать в месте использования непосредственно range, без промежуточных функций: # использовать так:
for k in range(1, (maxn + 1) | 1, 2): print(k)
# или так:
print(*range(1, (maxn + 1) | 1, 2), sep = '\n')
И пара комментариев на тему решений, приведённых ниже:
1) Три из четырёх решений бегают по всему диапазону чисел, хотя заведомо нужно только каждое второе. Вместо того, чтобы передать шаг в range, они крутят лишние итерации. Так делать не надо.
2) Два из четырёх решений материализуют список, в который складывают все сгенерированные значения, хотя, единственное, что с ними надо сделать - это напечатать, а хранить их не требуется. Так делать тоже не надо, память - не резиновая.
Казалось бы, это мелочи, что там - лишние 50 чисел пробежать или лишние 49 сохранить, но из таких мелочей потом вырастают быдлосайты, у которых открываешь первую страничку - и броузер уже весит в памяти полгига и жёстко тупит. Он выполняет миллионы лишних вычислений и хранит сотни мегабайт лишних данных, потому что так реализованы ПТУшниками алгоритмы на этом сайте.