avp26/u8/program.py
2026-11-03 15:14:15 +01:00

53 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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