【问题标题】:How to find if a secret word contains all the characters from a list?如何查找一个秘密单词是否包含列表中的所有字符?
【发布时间】:2012-10-09 21:42:05
【问题描述】:

我一直在尝试解决这个问题,因为它是构建 Hangman 游戏的一部分。

我的问题是我需要编写一个代码来检查所有列表项是否都在密码中。如果都在列表中,则返回 True,否则返回 False。

这是我所做的工作:

def isWordGuessed(secretWord, lettersGuessed):
    a_list = []
    for i in range(0, len(lettersGuessed)):

        a_list.append(lettersGuessed[i])
    str1 = ''.join(a_list)
    if str1 in secretWord:
        return 1
    else:
        return 0

isWordGuessed('apple', ['e', 'i', 'k', 'p', 'r', 's'])

但是,我已经尝试过这样做:

isWordGuessed('apple', ['a', 'p', 'l', 'p', 'e'])

它返回 False,即使列表中的所有字母都在 'apple' 中

我想我可以在不创建字符串的情况下解决这个问题,但我不知道。顺便说一句,这必须适用于给定的任何单词和列表。如果所有列表项都在一个单词中,则为真,否则为假...有帮助吗?

【问题讨论】:

  • 你确定你没有问错问题吗?如果单词中没有字母未被猜测,则该单词被猜测,而不是如果所有猜测都正确 - 模数不会错误太多次。可能是为什么很多人给出的答案可以回答您的直接问题,但无助于解决问题。

标签: python string list function


【解决方案1】:

我会将密码和已经猜到的字母都转换为集合,并检查密码的字符集是否是猜测字符集的子集:

def isWordGuessed(secretWord, lettersGuessed):
    return set(secretWord) <= set(lettersGuessed)

【讨论】:

  • 最佳答案,但它应该是:(&lt;=,即set(secretWord) &lt;= set(lettersGuessed),包括完美的猜测案例。
  • isWordGuessed('apple', ['a', 'p', 'l', 'e']),它返回 False。所有字母都在秘密单词“苹果”中。这个想法是,如果单词多次使用相同的字母,则它必须计入猜测的单词。 pp_ -> 苹果?还是不是?
  • @PedroRomano 你是对的 :) 谢谢你的注意,我编辑了答案
  • @user1692479 欢迎您。一开始我做错了,因为总是在stackoverflow上输入太快并且缺乏测试:)
猜你喜欢
  • 2016-02-24
  • 1970-01-01
  • 2017-10-12
  • 2012-05-20
  • 2012-06-17
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多