使用列表A中的索引替换索引中列表B中的字符串

时间:2019-08-20 01:07:54

标签: python list indexing

希望我的表达方式有意义。我正在创建游戏“ Hangman”的简单版本。我希望用户能够看到单词中正确猜测的位置。我认为可以通过使用两个列表来完成此操作。列表A包含用户尝试猜测的单词。列表B包含正确的猜测及其在单词中的位置。我知道如何找到字母A在列表A中的位置,但是我似乎无法弄清楚如何在列表B中的相应索引处放置正确的猜测。

我使用

找到了列表A的索引
print([i for i, x in enumerate(word) if x == answer])

现在的问题是,我无法弄清楚如何使用它们的位置将正确的猜测正确地插入到它们相应的索引中。给定字母不止一个实例的单词对我来说有点难。

def get_word():
    try:
        get_answer = list(input('Please type a word: '))
    except TypeError:
        print('Words only please!')
    return get_answer
def check_guess(word):
    print('Welcome to hangman!')
    missing_char = '_'
    progress_list = []
    guess_list = []
    print('Your word is', +len(word), 'characters long. You will get',+len(word)+3, 'guesses. Good luck!\n')
    guesses = len(word) + 3
    for j in word:
        progress_list.append(missing_char)
    for i in range(guesses):
        while guesses > 0:
            answer = input('Enter a letter: ')
            print()
            guesses -= 1
            if answer in word:
                progress_list.insert(0, answer)
                guess_list.append(answer)
                print("Correct! The letter '", answer, "' appears", word.count(answer),"time(s)!")
                print()
                print('Here are all of your guesses so far: ',guess_list)
                print()
                print('Here is what is left', progress_list)
                print()
                print('You have', +guesses, 'guesses left! ')
                print()
            else:
                print('Sorry, that letter does not appear in the word')
                print()
                guess_list.append(answer)
                print('Here are all of your guesses so far: ',guess_list)
                print()
                print('Here is what is left', progress_list)
                print()
                print('You have', +guesses, 'guesses left! ')
                print()
check_guess(get_word())

2 个答案:

答案 0 :(得分:1)

我的建议是使用字典。让我详细说明。

在子手中,当用户猜出一个字母是正确的时,该字母的每个实例都会被照亮。

因此,与其像在这里一样查找列表A的索引,还不如:

print([i for i, x in enumerate(word) if x == answer])

将每个字母存储在字典中,其中字母为键,值作为索引数组。

然后,您可以简单地以相应字母访问该词典,并仅获取该字母的所有索引。然后在列表B中使用这些索引。

我希望这会有所帮助!随时要求澄清!

答案 1 :(得分:0)

您可以执行以下操作来代替progress_list.insert(0, answer)行:

for i, x in enumerate(word):
    if x == answer:
        progress_list[i] = x

这与列表理解相同,但是将其编写为循环可让您同时对progress_list进行更改。