我使用字典允许用户输入内容,但下一个问题是使用第二个字作为被调用函数的参数。目前,我有:
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个不同的功能来进行移动,我希望有一种方法可以当用户输入“向南移动”时,它使用第一个单词来调用该函数,然后'南'作为该函数方向的参数。
答案 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()
。