在一封信中检测重复

时间:2017-06-19 01:26:10

标签: python python-3.x function

我正在写一个Hangman程序,我基本上已经完成了,我只是坚持一部分。所以你必须在你的输入中检测到重复,我完成了那部分,但后来我用其中包含相同字母的单词弄乱了。
例如:
这个词是苹果:
当我输入一个,它表示做得很好,字母在单词中并打印出一个----
但是当我输入p时,它说得好,但只打印第一个p,所以输出看起来像这样ap ---
但我希望它能检测出单词中的所有p,例如:app--

这是我对该部分的代码:

def getGuessedWord():
    position = word.index(letter.lower())
    global words
    words = words[:position] + letter.lower() + words[position+1:]
    print(words)
    return words    

2 个答案:

答案 0 :(得分:0)

鉴于,例如:

  • letter = 'p'
  • word = 'apple'

这个列表理解:

[x==letter for x in word]

你可以检测到某个字母在哪里,如果有的话,在这个例子中它会返回:

[False, True, True, False, False]

这与 pp 文件中只有第二个和第三个字母是" p"

相对应。

由于Python中True 10False也是如此。因此,如果您想要一个数值,您只需对列表中的值求和即可:

sum([x==letter for x in word])

您可以尝试此操作来验证之前的声明:

>>> True == 1
True
>>> False == 0
True

有关更详细/具体的答案,我需要了解有关如何实施的更多信息。

答案 1 :(得分:0)

你需要在单词中找到这封信的所有位置!

  • 迭代你的单词(枚举函数返回索引和值列表)并检查值是否是你要搜索的字母!

然后

  • 修改您的words字符串!

那是

def getGuessedWord(letter,words,word):
    for position, ltr in enumerate(word):
         if ltr == letter:
            words = words[:position] + letter.lower() + words[position+1:]
    print(words)
    return words


word='apple'
words='-'*len(word)
while '-' in words:
        words = getGuessedWord(raw_input('Enter a letter : '),words,word)

输出:

Enter a letter : l
---l-
Enter a letter : e
---le
Enter a letter : a
a--le
Enter a letter : p
apple

希望它有所帮助!