我正在做一个小项目,我的程序解读一个字符串并找到它的每个可能的组合。
我有两个清单; comboList
和wordList
。 comboList
拥有该词的每个组合;例如,comboList
的{{1}}是:
'ABC'
(只有['ABC','ACB','BAC','BCA','CAB','CBA']
才是真正的词)
'CAB'
包含从文本文件导入的约56,000个单词。这些都可以在英语词典中找到,并按长度排序,然后按字母顺序排列。
wordList
是我的功能,通过检查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
,我该如何解决?
答案 0 :(得分:2)
我建议使用---
pdf_document: default
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r results='asis'}
library(xtable)
options(xtable.comment = FALSE)
df <- data.frame(cbind(c("a", "b"), c("$\\sin\\theta$", "$\\cos\\theta$")))
print(xtable(df),type="latex", hline.after = NULL, sanitize.text.function=function(x){x})
```
,因为它的实现速度会快得多。有set
方法。这是一个不区分大小写的解决方案:
set.intersection
答案 1 :(得分:1)
我认为这里的问题是你用相同的字母比较两个字符串,但混合低/大写。
要查看我是否正确,请尝试将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)