From 73dcc01694d003716bfd987d0ccdcf68e3a30367 Mon Sep 17 00:00:00 2001 From: kromskii2 <146603192+kromskii2@users.noreply.github.com> Date: Wed, 26 Feb 2025 18:30:04 +0700 Subject: [PATCH] Update main.py --- main.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index 4f32bd3..4b2cda8 100644 --- a/main.py +++ b/main.py @@ -1,21 +1,68 @@ +import argparse +import logging import time +from typing import Generator -def fibonacci_sequence(): +logging.basicConfig( + format='%(asctime)s [%(levelname)s] %(message)s', + filename='fibonacci.log', + level=logging.INFO +) +logger = logging.getLogger(__name__) + + +def fibonacci_sequence() -> Generator[int, None, None]: + """Генератор бесконечной последовательности Фибоначчи""" a, b = 0, 1 while True: yield a a, b = b, a + b + def main(): - fib_sequence = fibonacci_sequence() + parser = argparse.ArgumentParser( + prog='Fibonacci Generator', + description='Генератор бесконечной последовательности Фибоначчи', + epilog='Разработан с ❤️ для сообщества Фибоначчи' + ) + parser.add_argument( + '-d', '--delay', + type=float, + default=1.0, + help='Задержка между числами (секунды)' + ) + parser.add_argument( + '-l', '--language', + choices=['en', 'ru'], + default='auto', + help='Выбор языка вывода' + ) + + args = parser.parse_args() + + if args.delay < 0: + parser.error('Задержка не может быть отрицательной') + + lang = args.language if args.language != 'auto' else \ + 'en' if 'en' in locale.getdefaultlocale() else 'ru' try: + fib = fibonacci_sequence() while True: - fibonacci_number = next(fib_sequence) - print(f"Следующее число Фибоначчи: {fibonacci_number}") - time.sleep(0.1) # пауза в 1 секунду + number = next(fib) + message = { + 'en': f"Next Fibonacci number: {number}", + 'ru': f"Следующее число Фибоначчи: {number}" + }[lang] + logger.info(message) + print(f"\033[1;32m{message}\033[0m") # Выделение цветом + + time.sleep(args.delay) + except KeyboardInterrupt: - print("\nПрограмма завершена пользователем.") + logger.info("Программа завершена пользователем ⏹") + print("\n\033[1;33mПрограмма остановлена\033[0m") -if __name__ == "__main__": + +if __name__ == '__main__': main()