我正在制作一个小型地下城爬虫文本游戏,并且我想要使用某些代码,但我无法弄清楚如何使用。我想创建一个具有不完整结束语句的IF语句。
if cmd.lower() == "examine ...":
三个点将是用户选择的任何内容。选项的数量太多,无法为每一个提供那么多的IF语句。无论如何,我可以采取"检查"他们在IF声明中输入和使用的一部分?
答案 0 :(得分:4)
您需要“标记”输入字符串,然后根据命令(即第一个标记)“调度”结果。
您可以探索这样的解决方案:
def examine(thing):
print(f'It is a {thing}')
def attack(target):
print(f'You strike {target}. It seems offended.')
def tokenise_input(inp):
command, *args = inp.split(' ')
return (command, args)
def dispatch(command, *args):
commands = {
'examine': examine,
'kill': attack,
'attack': attack,
...,
}
return commands[command](*args)
command, args = tokenise_input(cmd)
dispatch(command, *args)
我确信您可以想象扩展commands
字典以允许用户可以使用更多命令,每个命令都指向他们自己的功能。
上面的字符串插值语法f'...'
在3.6中是新的,并且会在早期版本中导致语法错误。我建议你使用3.6,因为它很棒,但如果你不能,请用这样的用法代替:
def examine(thing):
print('It is a {thing}'.format(thing=thing))