Форум сайта python.su
Здраствуйте!
Мне нужно сгенерировать последовательность чисел, элементы которой возрастают, пока номер элемента не удовлетворяет условию: делится на пять без остатка, а затем убывают до следующего номера и т.д.
Есть идеи как это можно осуществить?
Офлайн
def f(n): """Печатает первые n элементов последовательности """ k=1 m=0 while k<=n: if k%5==0: m=m-1 print(m) else: m=m+1 print(m) k=k+1 return
Офлайн
может так
def f(n): """Печатает первые n элементов последовательности """ k=1 m=0 while k<=n: if k%5==0: for x in range(k): m=m-1 print(m) k=k+1 else: m=m+1 print(m) k=k+1
Офлайн
Правильно выводит, только первые 10 элементов)
Офлайн
Emmaвозрастают уже без проверки условия k%5==0 или с проверкой7
Убывают элементы № 5-9, а дальше опять возрастают
Офлайн
def f(n): r, k = 0, 1 for i in range(1, n+1): if not i % 5: k *= -1 r += k print(r)
Офлайн
Спасибо большое, очень помогли!
А можно написать то же самое через рекурсию?
Офлайн
Emmaможно, но это задача которая решается не через рекурсию! поэтому это очень-очень плохой код
А можно написать то же самое через рекурсию?
def f(k, s, e, r): for i in range(s, e+1): if not i % 5: print(r-k) return f(k * -1, i+1, e, r-k) r += k print(r)
Офлайн
Почему никто не вспомнил про генераторы?
Офлайн