This commit is contained in:
Volodymyr Baliasnikov 2026-11-03 15:14:15 +01:00
parent 94259ed3f8
commit 0575d18287

52
u8/program.py Normal file
View File

@ -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