Python 元组 wordle 猜测器 <string> 错误

Python tuple wordle guesser <string> error

所以,我正在猜词。 我无法得到“if (deadwords) not in x:” 它告诉我把它变成一个字符串,但作为一个字符串,它不能正常工作(忘记有字母的单词)我相信它叫做元组,但我不确定如何使用它们...

代码:

list1 = [
lotta words (too many)
]

c = 0
deadwords = ("r","o","s","k","n")

for x in list1:
  if (deadwords) not in x:
    c += 1
    print(f"found: {x}")

print(c)

错误信息:

Traceback (most recent call last):
   File "main.py", line 2324, in <module>
      if (deadwords) not in x:
TypeError: 'in <string>' requires string as left operand, not tuple

您可以使用 map() 来确定每个死词是否在给定的词中,然后使用 any() 来查找该词中是否存在任何死词:

list1 = [
"sleep",
"bbbbb"
]

c = 0
deadwords = ("r","o","s","k","n")

for word in list1:
  if not any(map(lambda x: x in word, deadwords)):
    c += 1
    print(f"found: {word}")

print(c)

我建议为此使用 set

word_list = ["hello", "world"]


deadwords = {"r", "o", "s", "k", "n"}
for word in word_list:
    if deadwords.intersection(word):
        print(f"deadword found in {word}")

如果 deadwords 中的 none 个字母在 word.

中,deadwords.intersection(word) 将 return 一个空集

您可以更改此代码,然后在找到要删除的单词后缩小可能的猜测范围。您想要维护 word_list 的副本并修改它而不是原始副本,例如:

word_list = [...]
dead_letters = set()

remaining = word_list.copy()
while not game_over:
    # guess word
    # validate guess
    # add bad letters to the dead_letters set

    remaining = [word for word in remaining if not dead_letters.intersection(word)]