我正在建造一个拼字游戏' 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
答案 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
所需的循环。