我正在做一个小项目,我的程序在其中解密字符串并找到它的所有可能组合。

我有两个清单。 comboListwordListcomboList包含单词的每个组合;例如,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)

10-07 15:16