U8_4
This commit is contained in:
parent
742e3cede9
commit
4e702378a8
@ -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()
|
||||
Loading…
Reference in New Issue
Block a user