首页 > 解决方案 > 当我使用 .insert() 函数时,为什么我的列表会变大?

问题描述

我正在尝试为家庭作业创建一个刽子手游戏,并且在将字母添加到正确的空格后,我一直在努力弄清楚为什么列表会混乱。

对于我的刽子手游戏,我有两个列表,一个包含需要猜测的单词,另一个包含玩家猜到的单词。我使用 for 循环来正确识别字母在“要猜测的单词”列表中的位置,并将它们放入“猜测”列表中。

当我这样做并在之后打印“猜测”列表时,列表会变得混乱。

我不是在寻找对我的代码进行大规模改进,因为我只是想学习基础知识(这是家庭作业),我只是想修复这个特定的错误。在完成这个作业之前我也从未使用过列表,所以我仍在学习如何使用它们哈哈。

谢谢!

finished = False
selected_word = input("Can player one input a word?")
selected_word_list = list(selected_word)
length_of_word = len(selected_word_list)


guessed_word = []
for x in range(0, length_of_word):
    guessed_word.append('_')

while finished == False:
    place_of_x = -1
    guess = input("Please enter a letter: ")
    if guess in selected_word_list:
        print("Well done you have found a letter")
        for x in selected_word_list:
            place_of_x = place_of_x + 1
            if x == guess:
                guessed_word.insert(place_of_x,guess)      
        print(guessed_word)

我希望列表的长度仍然相同。例如,如果我输入“banana”并猜测“a”,则输出为:

['_', 'a', '_', 'a', '_', 'a', '_', '_', '_']

当我想要它时:

['_', 'a', '_', 'a', '_', 'a']

标签: pythonpython-3.x

解决方案


你对做什么有误解insertinsert在第一个参数中给出的位置前面插入一个额外的新元素到列表中。

您似乎想要做的是更换一个项目。这可以通过简单的索引来完成:

guessed_word[place_of_x] = guess

推荐阅读