使用输入作为字典调用的函数的参数

时间:2012-09-26 07:54:12

标签: python dictionary

我使用字典允许用户输入内容,但下一个问题是使用第二个字作为被调用函数的参数。目前,我有:

def moveSouth():
    Player.makeMove("south")
def moveNorth():
    Player.makeMove("north")
def moveEast():
    Player.makeMove("east")
def moveWest():
    Player.makeMove("west")

function_dict = {'move south':moveSouth, 'wait':wait, 'sleep':sleep,
                 'move north':moveNorth, 'move':move, 'look':look,
                 'move east':moveEast,
                 'move west':moveWest}

并获得输入:

command = input("> ")
command = command.lower()
try:
   function_dict[command]()
except KeyError:
   i = random.randint(0,3)
   print(responses[i])

然而,我不希望有4个不同的功能来进行移动,我希望有一种方法可以当用户输入“向南移动”时,它使用第一个单词来调用该函数,然后'南'作为该函数方向的参数。

3 个答案:

答案 0 :(得分:1)

这个怎么样:

command = input("> ")
command_parts = command.lower().split(" ")
try:
   if len(command_parts) == 2 and command_parts[0] == "move":
       Player.makeMove(command_parts[1])
   else:
       function_dict[command_parts[0]]()
except KeyError:
   i = random.randint(0,3)
   print(responses[i])

基本上我只是尝试用空格分割输入并由第一部分决定命令的类型(移动等待 ...)。第二部分用作参数。

答案 1 :(得分:1)

split()输入,然后分别传递每个部分。

command = input("> ")
user_input = command.lower().split()
command = user_input[0]
if len(user_input) > 1:
    parameter = user_input[1]
    function_dict[command](parameter)
else:
    function_dict[command]()

答案 2 :(得分:0)

对于此类命令行处理,您可以轻松使用cmd模块。它允许您通过创建类似do_<cmd>的方法来创建命令,并将该行的其余部分作为参数。

如果您无法使用cmd模块,则必须自己解析命令行。您可以使用command.split()

执行此操作