我正在做一个小项目,我的程序在其中解密字符串并找到它的所有可能组合。
我有两个清单。 comboList
和wordList
。 comboList
包含单词的每个组合;例如,comboList
的'ABC'
为:
['ABC','ACB','BAC','BCA','CAB','CBA']
(只有
'CAB'
是真实的单词)wordList
包含从文本文件导入的大约56,000个单词。这些都可以在英语词典中找到,并按长度排序,然后按字母顺序排序。isRealWord(comboList,wordList)
是我的功能,通过检查它是否在comboList
中来测试wordList
中的哪些单词是真实的。这是代码:def isRealWord(comboList, wordList):
print 'Debug 1'
for combo in comboList:
print 'Debug 2'
if combo in wordList:
print 'Debug 3'
print combo
listOfActualWords.append(combo)
print 'Debug 4'
这是输出:
run c:/Users/uzair/Documents/Programming/Python/unscramble.py
Please give a string of scrambled letters to unscramble: abc
['A', 'B', 'C']
['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']
Loading word list...
55909 words loaded
Debug 1
Debug 2
Debug 2
Debug 2
Debug 2
Debug 2
Debug 2
Debug 4
[]
为什么
if combo in wordList
不返回True
,我该如何解决? 最佳答案
我认为这里的问题是,您比较两个具有相同字母但大小写混合的字符串。
要查看我是否正确,请尝试将wordList
中的所有单词都转换为大写,然后在isRealWord
中与大写单词进行比较(请确保),如下所示:
UpperCaseWordList = [word.upper() for word in wordList]
...
def isRealWord(comboList, wordList):
for combo.upper() in comboList:
if combo in wordList:
print combo
listOfActualWords.append(combo)