This commit is contained in:
Volodymyr Baliasnikov 2026-11-06 01:00:26 +01:00
parent 742e3cede9
commit 4e702378a8

View File

@ -3,8 +3,9 @@ class Node:
def __init__(self, text: str):
self.text = text
self.is_question = text.endswith('?')
self.left = None # Ссылка на левого потомка (выбор t да)
self.right = None # Ссылка на правого потомка (выбор f нет)
self.left = None # Ссылка на левого потомка (выбор a да)
self.right = None # Ссылка на правого потомка (выбор n нет)
class ZooExpertSystem:
# Класс для управления системой зоопарка
@ -21,7 +22,7 @@ class ZooExpertSystem:
# Списки для разделенных строк входа
self.db_lines = [] # Строки относящиеся к базе знаний (дереву)
self.user_choices = ([]) # Строки с ответами пользователя (t или f)
self.user_choices = [] # Строки с ответами пользователя (a или n)
def run(self):
# контроллер запускает программу в строгом соответствии с жизненным циклом.
@ -61,7 +62,7 @@ class ZooExpertSystem:
if not self.db_lines:
return False
# Читаем оставшиеся строки с ответами пользователя (t / f)
# Читаем оставшиеся строки с ответами пользователя (a / n)
try:
while True:
choice = input().rstrip("\r")
@ -87,7 +88,7 @@ class ZooExpertSystem:
if node.is_question:
self.q_count += 1
# Сначала собираем левую ветку (Да / 'a'), затем правую (Нет / 'n')
# Сначала собираем левую ветку (да a), затем правую (нет n)
node.left = parse_node()
node.right = parse_node()
@ -107,6 +108,44 @@ class ZooExpertSystem:
return True
def _print_stats(self):
# Вывод количества вопросов, ответов и подсказки пользователю
print(f"Pocet otazok: {self.q_count}")
print(f"Pocet odpovedi: {self.a_count}")
print("Odpovedajte 'a' pre prvu moznost alebo 'n' pre druhu moznost.")
def _run_quiz(self):
# Пошаговый спуск по дереву от корня к животному
curr = self.root
choice_idx = 0
while True:
# Выводим текущий вопрос или название животного
print(curr.text)
# Дошли до конечной точки (листа с животным)
if not curr.is_question:
print("Koniec")
return
# Если для дальнейшего вопроса у пользователя не осталось ответа
if choice_idx >= len(self.user_choices):
print("Koniec vstupu")
return
choice = self.user_choices[choice_idx]
choice_idx += 1
if choice == "a":
curr = curr.left
elif choice == "n":
curr = curr.right
else:
# Введен неверный символ (не a и не n)
print("Nerozumiem")
return
if __name__ == "__main__":
system = ZooExpertSystem()
system.run()