制作不完整的IF声明

时间:2018-02-22 17:38:39

标签: python if-statement

我正在制作一个小型地下城爬虫文本游戏,并且我想要使用某些代码,但我无法弄清楚如何使用。我想创建一个具有不完整结束语句的IF语句。

if cmd.lower() == "examine ...":

三个点将是用户选择的任何内容。选项的数量太多,无法为每一个提供那么多的IF语句。无论如何,我可以采取"检查"他们在IF声明中输入和使用的一部分?

1 个答案:

答案 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))