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
|
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
|
a, b = 0, 1
|
||||||
while True:
|
while True:
|
||||||
yield a
|
yield a
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
|
|
||||||
|
|
||||||
def main():
|
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:
|
try:
|
||||||
|
fib = fibonacci_sequence()
|
||||||
while True:
|
while True:
|
||||||
fibonacci_number = next(fib_sequence)
|
number = next(fib)
|
||||||
print(f"Следующее число Фибоначчи: {fibonacci_number}")
|
message = {
|
||||||
time.sleep(0.1) # пауза в 1 секунду
|
'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:
|
except KeyboardInterrupt:
|
||||||
print("\nПрограмма завершена пользователем.")
|
logger.info("Программа завершена пользователем ⏹")
|
||||||
|
print("\n\033[1;33mПрограмма остановлена\033[0m")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
Reference in new issue
Block a user