U8_1
This commit is contained in:
parent
94259ed3f8
commit
0575d18287
52
u8/program.py
Normal file
52
u8/program.py
Normal 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
|
||||||
Loading…
Reference in New Issue
Block a user