Принятие решений из пользовательского ввода + сохранение результатов в виде списка [Открытый вопрос] - PullRequest
0 голосов
/ 24 февраля 2019

Я относительно новичок в программировании, и поэтому я спрашиваю больше о совете / руководстве о том, как действовать с конкретной проблемой, вместо того, чтобы запрашивать конкретный совет по коду.

Я пытаюсьсоздать часть программного обеспечения, которая при запуске из консоли запрашивает у пользователя «a», «b» или «c».Когда выбор сделан, он сохраняет этот результат в пустой список (собирался использовать .append) и, в зависимости от предыдущего сделанного выбора, ответвляет / предоставляет пользователю выбор новых опций на выбор.Когда они достигли конца процесса принятия решения, он распечатал бы список, чтобы пользователь мог видеть их выбор.

Я думал об этом как о дереве решений и сделал эту довольно плохую диаграммудля меня, чтобы помочь осмыслить его структуру и правила (например, в какие варианты / варианты включаются).

введите описание изображения здесь

Если вы перейдете по ссылке, вы можетесм. диаграммуПо сути, я думал о создании очень длинной и уродливой цепочки if-elif-else с несколькими вложенными операторами if, в которой использовалась бы условная логика, которая предоставит пользователю определенные параметры в зависимости от того, что они ранее выбрали.Например, чтобы добраться до «c3», все, что вам нужно сделать, это выбрать C в начале, а затем следовать цепочке c1 -> c2 -> c3.Что является очень линейной прогрессией.но если вы хотите попасть в «ab2», у пользователя есть два способа добраться: A -> a2 -> ab1 -> ab2 или B -> b1 -> ab1 -> ab2;который имеет немного больше динамического развития.

Как бы вы это построили?Есть ли какие-то конкретные вещи / концепции, о которых мне следует подумать, например, создать это в функции, являющейся циклом while, или, возможно, использовать словарь вместо пустого списка?

Я понимаю, если этот тип вопроса не является стандартным длявот и поэтому получает голосование.Но это программный проект, основанный на моей идее, и любая форма информации, которая заставит меня задуматься в правильном направлении, будет принята.

1 Ответ

0 голосов
/ 24 февраля 2019

Я бы организовал его по словарю, связывающему каждое местоположение с вариантами, которые вы можете сделать там:

exits = {'A' : {'a' : 'A1',
                 'b' : 'A2'},
          'B' : {'a' : 'b1',
                 'b' : 'b2'}
          ...
        }

Для каждого местоположения вы предоставляете возможные варианты и то, где вас выбирает этот выбор, который вы можете использоватьключ в словаре мест, чтобы выяснить, что вы можете делать дальше.

В каждой итерации вы предоставляете пользователю варианты, которые он может сделать в этот момент

choices = exits[current_location]

Затем вы обновляете позицию

current_location = exits[current_location][user_choice] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...