Update main.py

This commit is contained in:
kromskii2 authored and GitHub committed 2025-02-26 18:30:04 +07:00
1 parent e6cdc76a11
commit 73dcc01694
1 file changed
+55 -8
+55 -8
View File
@@ -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 секунду
except KeyboardInterrupt:
print("\nПрограмма завершена пользователем.")
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") # Выделение цветом
if __name__ == "__main__":
time.sleep(args.delay)
except KeyboardInterrupt:
logger.info("Программа завершена пользователем ⏹")
print("\n\033[1;33mПрограмма остановлена\033[0m")
if __name__ == '__main__':
main()