#python #python-import #user-input
#python #python-импорт #пользовательский ввод
Вопрос:
В текстовой приключенческой игре (python) я получаю пользовательский ввод для следующего действия и использую регулярное выражение для разбора входных данных на две переменные. Две переменные — это глагол и существительное команды, все еще в строковой форме. Например, пользовательский ввод приводит к…
final_noun = ‘blow’ final_verb = ‘bubbles’
Регулярное выражение работает правильно.
В другом файле, называемом actions, у меня есть список функций для глаголов / действий, включая функцию blow . Я хочу вызвать эту функцию, просто используя final_noun и final_verb из регулярного выражения. Кроме того, у меня есть фактические пузырьки объекта final verb в файле GameFiles.
я попробовал: actions.final_verb(Gamefiles.final_noun)
который не работает, потому что входные данные по-прежнему являются строкой. затем я попытался использовать eval многими различными способами, такими как: actions.eval(final_verb(GameFiles.eval(remaining_noun)))
(Это также не сработало)
Спасибо за ваше время
Комментарии:
1.
final_noun = 'blow' final_verb = 'bubbles'
Разве это не наоборот?2. @johnGordon да, вы правы, хороший улов, я по ошибке отменил их, но только когда я опубликовал этот вопрос, а не в моем исходном коде.
Ответ №1:
Я думаю, вы можете сделать это, написав:
eval('actions.' final_verb)(eval('GameFiles.' remaining_noun))
импортируются заданные действия и игровые файлы, что означает, что вы можете запускать:
actions.blow(Gamefiles.bubbles)
Однако вам следует пересмотреть сохранение ваших функций и данных, сохраненных таким образом. Простым и немного лучшим способом сделать это было бы создание словаря со всеми вашими функциями и объектами, а затем доступ к ним через get_item:
verbs = {'blow' : actions.blow}
nouns = {'bubbles' : Gamefiles.bubbles}
verbs[final_verb](nouns[final_noun])