Python 试图在具有hangman上下文的列表中查找相同的项

Python 试图在具有hangman上下文的列表中查找相同的项,python,list,python-3.4,Python,List,Python 3.4,我正在用python做一个刽子手项目,有点麻烦。当单词中的一个字母重复时(例如“香蕉”中的“n”),我希望我的代码输出: >>>_ _ N _ N _ 而不是 >>>_ _ N _ _ _ 就像现在一样。这是我的密码: def click_1 (key): if key in word: x = word.index(key) for key in word[x]: hidden_word[

我正在用python做一个刽子手项目,有点麻烦。当单词中的一个字母重复时(例如“香蕉”中的“n”),我希望我的代码输出:

>>>_ _ N _ N _ 
而不是

>>>_ _ N _ _ _
就像现在一样。这是我的密码:

def click_1 (key):
    if key in word:
        x = word.index(key)
        for key in word[x]:
            hidden_word[x] = key
            print (hidden_word)
    else:
        print ("Nope")
其中:

word = word_list[random.randint(0,3)]
以及:

如果有人能为此提供帮助,我将不胜感激。

str.index()
只返回字符串中的第一个匹配项。在
word
中循环所有字符,而不是查找每个匹配的单词,索引由:

快速演示:

>>> word = 'BANANA'
>>> hidden_word = ["_ "] * len(word)
>>> def click_1 (key):
...     if key in word:
...         for index, character in enumerate(word):
...             if character == key:
...                 hidden_word[index] = character
...         print (hidden_word)
...     else:
...         print ("Nope")
... 
>>> click_1('N')
['_ ', '_ ', 'N', '_ ', 'N', '_ ']
>>> click_1('B')
['B', '_ ', 'N', '_ ', 'N', '_ ']
>>> click_1('A')
['B', 'A', 'N', 'A', 'N', 'A']

谢谢你,老兄,简单易懂地解决了这个问题。所以enumerate基本上与index相同,只是它不只是返回一个数字?@18166:
enumerate()
只是将一个正在运行的索引添加到序列中。因此,
character
被绑定到
word
中的每个字符,并且
enumerate()
添加了一个计数器。有一种更简单的方法来处理这个问题。与其试图跟踪你的“隐藏单词”,不如每次都动态生成它。你的隐藏单词应该始终是
“”。加入([字母如果字母在猜测字母中,则字母在真实单词中,则字母在其他字母中])
。因为在一个标准的刽子手游戏中,你无论如何都应该保存猜测的字母,这是一个简单的处理方法。@adamsmith我喜欢你所说的,但是ch和真实世界是什么?@18166哎哟,
ch
是从一个重新因素中遗留下来的,这个重新因素本应使它更容易理解,但这只会使它更难:)
real_-word
hidden_-word
相反——它是实际的未屏蔽词。所以这就像是
'.join([字母如果字母在猜字母中,则字母在单词中,则字母在另一个字母中])
为什么我会被否决?我做错什么了吗?
def click_1 (key):
    if key in word:
        for index, character in enumerate(word):
            if character == key:
                hidden_word[index] = character
        print (hidden_word)
    else:
        print ("Nope")
>>> word = 'BANANA'
>>> hidden_word = ["_ "] * len(word)
>>> def click_1 (key):
...     if key in word:
...         for index, character in enumerate(word):
...             if character == key:
...                 hidden_word[index] = character
...         print (hidden_word)
...     else:
...         print ("Nope")
... 
>>> click_1('N')
['_ ', '_ ', 'N', '_ ', 'N', '_ ']
>>> click_1('B')
['B', '_ ', 'N', '_ ', 'N', '_ ']
>>> click_1('A')
['B', 'A', 'N', 'A', 'N', 'A']