2016-10-22 20 views
-4

我有一本字典,看起来像Python 3.x都有在列表中找到字符串不完全

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

我怎样才能使这些错误的搜索帐户,并至少在一些时间选择正确的事情?

+3

您将不得不做一些模糊匹配,这对于SO问题来说太宽泛了。 – jonrsharpe

+1

1.这是一个列表,而不是字典。 2.如果用户拼写错误,则比较失败。你需要添加一些(复杂的)算法来检查类似的词 – UnholySheep

+0

你正在期待'stopCommands'为'dict'并且像'dict'一样检索它的值,但实际上你有'list'对象。你需要使用'index'(这是'int'值)获取值 –

回答

1

对于拼写错误,请查看fuzzywuzzy库。

要普遍比列出每个可能的命令,你能想到的更灵活,其他:

  1. 删除该用户输入的所有空间第一,所以你不必同时列出shut downshutdown。事实上,只是删除除字母以外的所有字符,所以例如在最后添加句号就没有问题。
  2. 检查输入是否包含这样的词,如off,quitexit,而不是严格相等。
相关问题