我已经为这个特定的单词网格创建了一个所有可能结果的列表,做了对角线,向上,向下和所有的反转):
我将其称为allWords,但当我尝试在allWords中查找我知道的特定单词时,循环找不到隐藏的单词。我知道我的问题,但我知道如何绕过它(对于糟糕的解释,很抱歉,希望下面的例子能更好地说明它):
下面是一个例子: My wordList是我知道的隐藏在wordgrid中的单词的列表。我的allWords是来自wordgrid的行、列、对角线的列表,但是
WordList = ['HAMMER','....']
allWords = ['ARBHAMMERTYU','...']这个HAMMER在allWords中,但被后面的其他字符“遮盖”了,所以我无法显示HAMMER在wordgrid中。
length = len(allWords)
for i in range(length):
word = allWords[i]
if word in wordList:
print("I have found", word)它在allWords中找不到任何单词HAMMER。
任何对解决这个问题的帮助都将是巨大的。
发布于 2015-10-20 01:28:57
如果我理解正确的话,您正在尝试在allWords中查找匹配项,并且您希望遍历WordList并确定是否存在子字符串匹配。
因此,如果这是正确的,那么您的代码并没有完全做到这一点。要一步一步地检查您的代码以更正发生的情况:
length = len(allWords)
for i in range(length):上面你想做的不一定是检查你的allWords。您希望遍历WordList并查看它是否在allWords中。您并没有这样做,而是想这样做:
length = len(WordList)
for i in range(length):考虑到这一点,这意味着您现在想引用WordList而不是allWords,所以您现在想要更改这一点:
word = allWords[i]要这样做:
word = WordList[i]最后,这里有一个新的信息,用来确定您正在匹配的字符串中是否确实有一个子字符串匹配。一种称为"any“的方法。"any“方法的工作方式是,如果至少找到一个与您要查找的内容匹配的项,则返回True。它看起来是这样的:
any(if "something" in word in word for words)如果"something“在word中,它将返回True,否则将返回False。
因此,将所有这些放在一起,并使用样例输入运行代码,我们得到:
WordList = ['HAMMER','....']
allWords = ['ARBHAMMERTYU','...']
length = len(WordList)
for i in range(length):
word = WordList[i]
if any(word in w for w in allWords):
print("I have found", word)输出:
I have found HAMMER发布于 2015-10-20 01:30:01
您不是在将wordList中的每个word与allWords中的一个单词进行比较。行if word in wordList比较的是确切的单词。即
仅当单词锤子在wordList中时,if word in wordList才返回True。
要匹配子字符串,您需要另一个循环:
for i in range(length):
word = allWords[i]
for w in WordList:
if w in word:
print("I have found ", word)发布于 2015-10-20 01:31:46
您可以尝试如下所示:
for word in allWords:
if word in WordList:
print("I have found", word)啊,或者错误是你写了WordList,你真正定义了wordList。希望这能有所帮助。
https://stackoverflow.com/questions/33220236
复制相似问题