Update main.py
This commit is contained in:
1 parent
e6cdc76a11
commit
73dcc01694
1 file changed
+54
-7
@@ -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()
|
||||
Reference in new issue
Block a user