我正在写一个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
答案 0 :(得分:0)
鉴于,例如:
letter = 'p'
word = 'apple'
这个列表理解:
[x==letter for x in word]
你可以检测到某个字母在哪里,如果有的话,在这个例子中它会返回:
[False, True, True, False, False]
这与 pp 文件中只有第二个和第三个字母是" p"
相对应。由于Python中True
1
,0
和False
也是如此。因此,如果您想要一个数值,您只需对列表中的值求和即可:
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
希望它有所帮助!