2016-10-22 17 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,而不是嚴格相等。
相關問題