如何处理Python中的用户输入?

时间:2019-05-06 13:10:56

标签: python

我正在做一个小游戏。 现在,我需要弄清楚如何处理用户输入。

用户必须能够拿起或放下物品。 说明:“取货”。

'item'在列表中,因此可以是任何东西。

        command = input("> ")
        command = command.upper()


        if self.current_room.is_connected(command):
            self.move(command)
        elif command in ['HELP', 'LOOK', 'QUIT', 'INVENTORY']:
            self.commands(command)
        elif ??? TAKE 'item'
            self.take(command)
        else:
            print("Invalid move!")

我如何将此代码转移到take方法。 而我该如何拆分这两个单词的输入呢?

def take(self, command):
    if command == 'TAKE':
        if 'item' not in self.current_room.inventory:
            print('No such item.')
        else:
            self.current_room.inventory.remove_item('item')
            self.player_inventory.add_item('item')
            print('item', 'taken.')

1 个答案:

答案 0 :(得分:1)

当前,您的命令不会将命令参数拆分到arg列表中。这是一种相当简单的方法,可以通过在开始解析之前分解为参数来实现所需的内容。这是在编译器领域称为 tokenizing 的过程的一部分。

        command = input("> ")
        command = command.upper().split()

        if self.current_room.is_connected(command[0]):
            self.move(command[0])
        elif command[0] in ['HELP', 'LOOK', 'QUIT', 'INVENTORY']:
            self.commands(command)
        elif command[0] in ['TAKE', 'DROP']:
            item = command[1]
            if command[0] == 'TAKE':
                self.take(command[1])
            else:
                self.drop(command[1])
        else:
            print("Invalid move!")

您应该能够相当容易地处理takedrop方法中的错误。您可能需要检查以下几种情况:

  • 如果不携带物品(当您drop时)显示一条消息
  • 如果房间中不存在该物品(当您take时)
  • 如果您已经携带了太多东西(take时)