12/11 Декораторы и параметрические итераторы
Декораторы: написать декоратор adder(f), который прибавляет 1 ко всем позиционным параметрам числовой функции f(), а также к её возвращаемому значению
Параметрические декораторы: написать параметрический декоратор swap(i, k), который меняет i-й и k-й позиционный параметр функции.
Параметрические генераторы: написать генератор «угадай число», который при инициализации загадывает число в указанном диапазоне, а при следующих .send(n) возвращает "less", "greater" или "equal" в зависимости от того, загаданное число меньше, больше или равно n. Если равно, итерация прекращается.
1 from random import randrange 2 def guess(hi): 3 answers = [ "less", "equal", "greater" ] 4 num = randrange(hi) 5 ask = "guess what" 6 while ask != "equal": 7 guess = yield ask 8 ask = answers[1 + (guess<num) - (guess>num)] 9 yield ask 10 11 g = guess(1000) 12 guesser = next(g) 13 for i in range(10): 14 if guesser == "equal": 15 print("success") 16 break 17 r = int(input(f"{guesser}: ")) 18 guesser = g.send(r) 19 else: 20 print("you're looser")