在另一个单词Python中找到这个单词的字符

时间:2014-11-16 03:32:13

标签: python string dictionary compare character

我正在制作猜词游戏。所以如果给我lime-tree字。然后我想检查该单词中可能的单词。如果我猜到limetreetimereel或者甚至猜不是真正的单词等,那么它们都是true,因为它们是由{这个词。如何检查猜到的单词是否在这个词内?

被修改

我忘了提到这些字母不能超过给定单词中的指定。

2 个答案:

答案 0 :(得分:1)

这是简单的一个 我使用count,如果在new_word计数中更多的是字母,它将返回错误。或者最后返回正确。

>>> def word_check(original,new_word):
...     for x in new_word:
...         if new_word.count(x) > original.count(x):
...             return "Wrong"
...     return "Correct"
... 
>>> word_check('lime-tree','trel')
'Correct'
>>> word_check('lime-tree','treeel')
'Correct'
>>> word_check('lime-tree','treeeel')
'Wrong'
>>> word_check('lime-tree','mile')
'Correct'
>>> word_check('lime-tree','miilet')
'Wrong'

答案 1 :(得分:0)

您可以使用Counter来计算给定单词中的所有字母,并从要检查的单词中减去字母,如下所示:

from collections import Counter


def check_in_given_word(given_word, to_check):
    given_word_counter = Counter(given_word)
    word_counter = Counter(to_check)
    given_word_counter.subtract(word_counter)
    #if any -ve letter count is found, it is not in given_word
    if any([c < 0 for c in given_word_counter.values()]):
        # do whatever you want, or return False
        print "{} is NOT in {}".format(to_check, given_word)
    else:
        print "{} is in {}".format(to_check, given_word)
    # print the counter for your info
    print given_word_counter

样本用法:

check_in_given_word('lime-tree', 'tree')
tree is in lime-tree
Counter({'e': 1, 'i': 1, 'm': 1, '-': 1, 'l': 1, 'r': 0, 't': 0})

check_in_given_word('lime-tree', 'reel')
reel is in lime-tree
Counter({'e': 1, 'i': 1, 'm': 1, '-': 1, 't': 1, 'l': 0, 'r': 0})

check_in_given_word('lime-tree', 'hello')
hello is NOT in lime-tree
Counter({'e': 2, 'i': 1, 'm': 1, '-': 1, 'r': 1, 't': 1, 'l': -1, 'o': -1, 'h': -1})

check_in_given_word('lime-tree', 'reeeeel')
reeeeel is NOT in lime-tree
Counter({'i': 1, 'm': 1, '-': 1, 't': 1, 'l': 0, 'r': 0, 'e': -2})

如您所见,所有字母都应为+ ve值。如果找到任何负值,则要检查的单词不在您的给定单词中。