Как использовать строковый ввод как переменный вызов Python? - PullRequest
0 голосов
/ 21 апреля 2020
item =["Item_name","Price"]
stop = input("Enter your message: ")
if stop[:3] == "add":
  item2 = stop[4:]

У меня есть что-то вроде этого, и я хочу получить элемент переменной на основе пользовательского ввода. Например, пользователь вводит данные «добавить элемент», он должен выводить item[0] и item[1], но я не знаю, как это сделать.

1 Ответ

0 голосов
/ 21 апреля 2020

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

from enum import Enum
from typing import Callable, Dict

class Command(Enum):
   """All the commands the user might input."""
   ADD = "add"
   # other commands go here

class Parameter(Enum):
   """All the parameters to those commands."""
   ITEM = "item"
   # other parameters go here


item = ["Item_name","Price"]


def add_func(param: Parameter) -> None:
    """Add a thing."""
    if param == Parameter.ITEM:
        print(item)

COMMAND_FUNCS: Dict[Command, Callable[[Parameter], None]] = {
    """The functions that implement each command."""
    Command.ADD: add_func,
}

# Get the command and parameter from the user,
# and then run that function with that parameter!
[cmd, param] = input("Enter your message: ").split()
COMMAND_FUNCS[Command(cmd)](Parameter(param))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...