验证单词仅使用随机列表中的字母

时间:2017-05-05 05:43:34

标签: python string

我正在建造一个拼字游戏' Python中的游戏。基本上,用户被给予7个随机生成的字母,这些字母存储在列表random_letters中。然后他们使用这些字母输入一个单词 - 这是一个存储为player1_word的字符串。

我坚持的位置是我需要验证用户是否输入了有效字词 - 例如player1_word仅使用来自random_letters的字母。

def is_valid_answer(player_word: str, letters: list) -> bool:
    ...

预期行为:

>>> random_letters = ["D", "O", "G", "P", "X", "K"]
>>> is_valid_answer("DOG", random_letters)
True
>>> is_valid_answer("CAT", random_letters)
False

3 个答案:

答案 0 :(得分:0)

randomLetters = [ 'a' , 'b' , 'x']

word = input('Enter A word : ')
first_letter = word[0]
if first_letter in randomLetters:
  print('valid')
else:
  print('Not valid')

<强> RESULT

Enter A word :  alex
valid

Enter A word :  devon
Not valid

答案 1 :(得分:0)

您可以使用set操作执行此操作:

if not set(Player1Word) - set(randomLetters):
    print "Valid"

set是一个只包含唯一项的数据结构。这个想法是,转换他们两个设置。然后,从randomLetters中减去Player1Word,看看Player1Word是否包含randomLetters以外的内容。如果不包含,则Player1Word有效,否则无效。

答案 2 :(得分:0)

Python does not have a native multiset type所以对此没有一个单行,但collections.Counter有点帮助:

def is_valid_answer(word, letters):
    letter_counts = collections.Counter(letters)
    for letter in word:
        if not letter_counts[letter]:
            return False
        letter_counts[letter] -= 1
    return True

使用Counter至少可以节省您使用计数填充普通dict所需的循环。