#python
#python
Вопрос:
У меня есть словарь, который выглядит как
stopCommands = {"quit": "I will quit now", "stop": "Goodbye!"}
и затем у меня есть код, который просматривает это, и если переменная равна одной из этих, он выводит значение
userInput = input("Enter your command: ").casefold()
if userInput in stopCommands
print(stopCommands[userInput])
Это работает, но что, если пользователь ошибается в написании или вводит shut off
вместо shut down
?
Как я могу заставить поиск учитывать эти ошибки и выбирать правильную вещь хотя бы некоторое время?
Комментарии:
1. Вам придется выполнить какое-то нечеткое сопоставление, которое слишком широкое для вопроса SO.
2. 1. Это список, а не словарь. 2. Если пользователь неправильно написал слово, то сравнение завершается неудачей. Вам нужно было бы добавить некоторый (сложный) алгоритм для проверки похожих слов
3. Вы ожидаете, что это
stopCommands
какdict
, и извлекаете ее значение какdict
но на самом деле у вас естьlist
объект. Вам нужно извлечь значение, используяindex
(которые являютсяint
значениями)4. Пользователь будет использовать [ctrl] [C]. если он хочет уйти…
5. Извините за неправильное именование.
Ответ №1:
На предмет орфографических ошибок ознакомьтесь с библиотекой fuzzywuzzy.
Чтобы быть более гибким в целом, кроме перечисления всех возможных команд, о которых вы можете подумать:
- Сначала удалите все пробелы из пользовательского ввода, чтобы вам не приходилось перечислять оба
shut down
иshutdown
. На самом деле просто удалите все символы, отличные от букв, так что, например, добавление точки в конце подойдет. - Проверьте, содержит ли ввод такие слова, как
off
,quit
илиexit
, вместо строгого равенства.