diff --git a/u8/program.py b/u8/program.py new file mode 100644 index 0000000..7e19978 --- /dev/null +++ b/u8/program.py @@ -0,0 +1,52 @@ +class Node: + # класс решений (вопрос или конечный ответ) + def __init__(self, text: str): + self.text = text + self.is_question = text.endswith('?') + self.left = None # Ссылка на левого потомка (выбор a да) + self.right = None # Ссылка на правого потомка (выбор n нет) + +class ZooExpertSystem: + # Класс для управления системой зоопарка + # Отвечает за 1чтение данных, 2построение бинарного дерева решений + # 3валидацию структуры и 4проведение взаимодействия с пользователем + + def __init__(self): + # Корень построенного бинарного дерева + self.root = None + + # Счетчики элементов всей базы знаний + self.q_count = 0 # Количество вопросов + self.a_count = 0 # Количество ответов (животных) + + # Списки для разделенных строк входа + self.db_lines = [] # Строки относящиеся к базе знаний (дереву) + self.user_choices = ([]) # Строки с ответами пользователя (a или n) + + def run(self): + # контроллер запускает программу в строгом соответствии с жизненным циклом. + + print("Expert zo zoo to vie.") + # Считываем весь поток ввода и разделяем его + if not self._parse_input(): # _parse_input говорит нам что метод приватый + print("Chybna databaza") + return + + # Строим дерево решений из прочитанных строк + if not self._build_tree(): # _build_tree создает цыпочку из вопросов которые приводят к ответу да или нет + print("Chybna databaza") + return + + # Выводим информацию о базе знаний + self._print_stats() + + # Запускаем интерактивный опрос пользователя + self._run_quiz() + +def name(): + lines = [] + text = input().strip("/r") + while text: + end_lines = lines.append(text) + text = input().strip("/r") + return end_lines