March 21
Итераторы. Генераторы
# Итераторы class myIterator: def __init__(self, max_num: int) -> None: self.max_num = max_num def __iter__(self) -> 'myIterator': self.current_num = 0 return self def __next__(self) -> int: if self.current_num < self.max_num: self.current_num += 1 return self.current_num else: raise StopIteration def main(): a = myIterator(5) print(a.__iter__().__next__()) print(a.__next__()) print(a.__next__()) print(a.__next__()) print(a.__next__()) print() print(next(iter(a))) print(next(a)) print(next(a)) print(next(a)) print(next(a)) print() for number in a: print(number) if __name__ == '__main__': main()
# Генераторы def my_generator(max_num: int): current_num = 0 while current_num < max_num: current_num += 1 yield current_num def main(): a = my_generator(5) print(next(a)) print(next(a)) if __name__ == '__main__': main()
# Создайте генератор, который генерирует числа Фибоначчи по мере запросов def fibonacci_generator(): a, b = 0, 1 while True: yield a a, b = b, a + b def main(): a = fibonacci_generator() for i in range(1, 11): print(f'Число {i} последовательности чисел Фибоначчи:\t{next(a)}') for i in range(11, 21): print(f'Число {i} последовательности чисел Фибоначчи:\t{a.__next__()}') if __name__ == '__main__': main()
# Создайте генератор, который генерирует случайные целые числа в заданном диапазоне import random def generate_random_number(start: int, end: int): while True: yield random.randint(start, end) def main(): a = generate_random_number(1, 20) b = generate_random_number(20, 40) # 10 случайных чисел в диапазоне [1, 20] for _ in range(10): print(a.__next__()) print() # 10 случайных чисел в диапазоне [20, 40] for _ in range(10): print(next(b)) if __name__ == '__main__': main()