Python 3.10 中的文字游戏验证用户输入仅使用特定字符(7 个随机字母)

Validate user input uses only specific characters (7 random letters) for a word game in Python 3.10

我对编程还很陌生,但我正在通过创建一个文字游戏来尝试一下。

import random
HowManyVowels = random.randint(1,5)
vowels = ["A" , "E" , "I" , "O" , "U"]
RoundVowels = random.sample(vowels,HowManyVowels)
HowManyConsonants = 7 - HowManyVowels
Consonants = ["B" , "C" , "D" , "F" , "G" , "H" , "J" , "K" , "L" , "M" , "N" , "P" , "Q" ,"R" , "S" , "T" , "V" , "W" , "X" , "Y" , "Z"]
RoundConsonants = random.sample(Consonants,HowManyConsonants)
RoundLetters = RoundVowels + RoundConsonants 
print(RoundLetters)
import time
WordsGuessed = []

timeout = time.time() + 60*1   # 1 minute from now
while True:
    test = 0
    if test == 1 or time.time() > timeout:
        break
    test = test - 1
    PlayerWord = input("What letters can you make from these letters?")
    WordsGuessed.append(PlayerWord)

print(WordsGuessed)

我已经到了可以随机 select 一轮的字母并将一轮限制为一分钟的地方。输入验证是我挂断电话的地方。因此,如果我 运行 代码和字母 [A E M R T S V ] 被 select 编辑,则应该只允许用户使用这些字母。允许重复,长度必须超过3(不过这两条规则会更容易实现)。

问题是如何限制用户输入每轮选择的字符(大写和小写)。

这里有一个简单的验证方法。遍历他们输入的单词中的字母,并确保它们在允许的字母列表中。它看起来像这样:

for letter in PlayerWord: # This will loop through the input word
  if letter not in RoundLetters:
    print('Letter not in allowed list')
    check = True
    break
if check:
  check = False
  continue
else:
  wordsGuessed.append(PlayerWord)

此外,请注意,将所有导入语句组合在代码顶部。

我会给你一些部分但不是全部答案:

  • 使用 in 检查字符串中是否包含某个字符,例如'a' in 'aeiou' == True
  • 如果正确选择了字符串中的每个字母,则该字符串被正确选择。使用 for c in PlayerWord: 循环遍历单词中的每个字母并记住是否找到不正确的字母
  • 用 while 循环重复玩家输入,直到你得到一个正确的单词