Как подставлять данные из словаря для ветвлений алгоритма?

pums

Новичок
Пользователь
Авг 1, 2020
55
0
6
Человек показал пример и не объяснил, как он работает. Не могли бы Вы ещё дополнительно засунуть в него несколько строк с картинок, чтобы в более подробном примере попробовал понять, как подставлять другие строки? Надо, чтобы программа задавала вопросы, что на изображениях.
Это из книги автора Наумов Л.Б. "Учебные игры в медицине" (дополнения к этому алгоритму есть в других книгах автора, они этой серии выпущены в 70-80 годах).
Сейчас в национальном руководстве алгоритм другой, возможно из-за того, что этот более сложен для усвоения и применения.
Python:
db = {
    # pk: parent_id, a, a_detail, q
    1: (None, None, None, 'Пульсация на сонных артериях?'),
    2: (1, 'есть', 'Жизнь…', ''),
    3: (1, 'нет', '', 'Кошачий глаз?'),
    4: (3, 'есть', 'Биологическая смерть', ''),
    5: (3, 'нет', '', 'Длительность?'),
}
pk = 1
while True:
    _, _, a_detail, q = db[pk]
    if a_detail is not None:
        print(a_detail)
    print(q)
    for pk2, (parent_id, a, _, _) in db.items():
        if parent_id == pk:
            print('{}) {}'.format(pk2, a))
    pk = int(input('> '))

1.jpg

2.jpg

3.jpg

4.jpg
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Надо, чтобы программа задавала вопросы, что на изображениях.
Вот пример:
Python:
db = {
    # pk: parent_id, a, a_detail, q
    1: (None, None, None, 'Пульсация на сонных артериях?'),
    2: (1, 'есть', 'Жизнь…', ''),
    3: (1, 'нет', '', 'Кошачий глаз?'),
    4: (3, 'есть', 'Биологическая смерть', ''),
    5: (3, 'нет', '', 'Длительность?'),
    6: (5, 'нет данных', 'Клиническая смерть', 'Основание грудной клетки'),
    7: (5, '< 5 минут', 'Клиническая смерть', 'Основание грудной клетки'),
    8: (5, '> 5 минут', 'Биологическая смерть', ''),
    9: ((6, 7), 'жесткое', 'Реанимация не возможна', 'Разгибание головы к затылку'),
    10: ((6, 7), 'мягкое', 'Реанимация не возможна', ''),
    11: (9, 'сделано', 'Реанимация возможна', 'Очищение ротовой полости'),
    12: (9, 'не сделано', 'Эффективная реанимация не возможна', ''),
    13: (11, 'сделано', 'Реанимация возможна', 'Расположение рук'),
    14: (11, 'не сделано', 'Реанимация может оказаться не возможной', ''),
    15: (13, 'на границе средней и нижней трети', 'Обеспечена оптимальная позиция', 'Чередование компрессий грудины и вентиляций'),
    16: (13, 'другие позиции', 'Эффективная реанимация не возможна или случайна', ''),
    17: (15, '10:2 или 5:1', 'Реанимация эффективна', 'Критерии эффективности реанимации'),
    18: (15, 'другие соотношения', 'Реанимация не эффективна', ''),
    19: (17, 'есть все признаки', 'Реанимация эффективна', 'Краниогипотермия'),
    20: (17, 'нет хотя бы одного признака', 'Реанимация не эффективна', ''),
    21: (19, 'Обеспечена', 'Эффективность реанимации возрастает', 'Организация дальнейшей специпомощи'),
    22: (19, 'не обеспечена', 'Эффективность реанимации убывает', ''),
    23: (21, 'Реанимационной бригадой', 'Оптимальный вариант успешной реанимации', 'Последующая госпитализация больного'),
    24: (21, 'Линейной бригадой', 'Эффективность реанимации сомнительна', 'Последующая госпитализация больного'),
    25: (21, 'Не обеспечена', 'Эффективность реанимации сомнительна', 'Последующая госпитализация больного'),
    26: ((23, 24, 25), 'Реанимационной бригадой или реаниматологом', 'Эффективность реанимации наибольшая', ''),
    27: ((23, 24, 25), 'Силами СП или своими силами', 'Опасность повторной смерти', ''),
}
pk = 1
while True:
    _, _, a_detail, q = db[pk]
    if a_detail is not None:
        print(a_detail)
    if q != '':
        print(q)
    else:
        break
    for pk2, (parent_id, a, _, _) in db.items():
        if isinstance(parent_id, tuple):
            if pk in parent_id:
                print('{}) {}'.format(pk2, a))
        else:
            if parent_id == pk:
                print('{}) {}'.format(pk2, a))
    pk = int(input('> '))
Добавил составные ключи (для случаев когда несколько вариантов ведут к продолжению вопросов) и выход из цикла при отсутствии дальнейших вопросов.
 
  • Мне нравится
Реакции: pums

Форум IT Специалистов