Как исправить Python dict.get () возвращает значение по умолчанию после возврата значения ключа? - PullRequest
1 голос
/ 03 апреля 2019

Когда я пытаюсь ввести, например, «help move» - этот код выводит соответствующее справочное сообщение «move» и значение по умолчанию. Но если я правильно понял dict.get (key [, value]), значение по умолчанию должно появляться только в том случае, если ключ (например, «run» вместо «move») отсутствует в словаре.

Я пытался проверить, является ли мой ключ строкой и не имеет пробелов. Не знаю что / как проверить еще.

#!/usr/bin/env python3
def show_help(*args):
    if not args:
        print('This is a simple help text.')
    else:
        a = args[0][0]       
        str_move = 'This is special help text.'

        help_cmd = {"movement" : str_move, "move" : str_move, 
            "go" : str_move}
        #print(a)  # print out the exact string
        #print(type(a))  # to make sure "a" is a string (<class 'str'>)
        print(help_cmd.get(a), 'Sorry, I cannot help you.')

commands = {"help" : show_help, "h" : show_help}

cmd = input("> ").lower().split(" ")  # here comes a small parser for user input
try:
    if len(cmd) > 1:
        commands[cmd[0]](cmd[1:])
    else:
        commands[cmd[0]]()
except KeyError:
    print("Command unkown.")

Я ожидаю вывод This is a special help text., если введу help move, но фактический вывод This is special help text. Sorry, I cannot help you with "move"..

1 Ответ

1 голос
/ 03 апреля 2019

Суть проблемы заключается в следующей строке:

print(help_cmd.get(a), 'Sorry, I cannot help you with "{}".'.format(a))

По умолчанию используется вызов, который необходимо получить, поэтому он не действует по умолчанию и объединяется.Чтобы это было по умолчанию, измените на:

print(help_cmd.get(a, 'Sorry, I cannot help you with "{}".'.format(a)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...