元素未从lis中删除

2024-04-19 18:09:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个hangman程序,并使用list()函数将单词转换为一个列表,其中每个字母都是自己的元素。当用户输入字母作为猜测时,我希望从列表中删除该字母。我试过list.remove(obj)函数,但当我在shell中键入列表的名称时,没有删除任何字母。你知道吗

wordList=list(word)letter=input("please enter a letter")
if len(letter)>1:
    print('invalid input, you may only enter one letter at a time')
elif letter.isalpha():
    if letter in letters:
        print('you have already entered this letter')
    else:
        letters.append(letter)

        if any(letter in s for s in wordList,):
            print(letter,"is in the word")
            wordList.remove(letter)

为长度编辑。 你知道为什么这些字母没有从wordList中删除吗?你知道吗


Tags: 函数inyou列表inputif字母remove
2条回答

我可以运行你的代码。建议对删除多个字母进行小改动。

word = "apple"
wordList=list(word)
while wordList != []:
    letter=input("please enter a letter")
    letters = []
    if len(letter)!=1:
        print('invalid input, you may only enter one letter at a time')
    if letter.isalpha():
        if letter in letters:
            print('you have already entered this letter')
        else:
            letters.append(letter)
        if any(letter in s for s in wordList,):
            print(letter,"is in the word")
            wordList =filter(lambda a: a != letter, wordList)
            #wordList.remove(letter)
    print wordList

你知道吗列表.删除()-仅删除字母的第一个匹配项。您可以使用:

filter(lambda a: a!=letter, wordList) 

我重新创造了这个,它对我起了作用: enter image description here

不过,我认为这不是解决问题的正确方法,因为.remove()只处理列表中的第一个匹配项,您可以尝试以下操作

letters = list('_'*len(wordList))
if letter in wordList:
    qtty = wordList.count(letter)
    position = wordList.index(letter)
    letters[position] = letter
if qtty > 1:
    for i in range(qtty-1):
        position = wordList.index(letter, position+1)                
        letters[position] = letter

这样,你就没有了一个完整的列表,每次插入正确的字母都会删除,你就会有一个空的(实际上充满了“\”字符)列表,每次插入正确的字母都会将字母添加到它的位置,这样你就可以像这样打印当前单词了 enter image description here

我做了一个这样的游戏,它在我的github,说明是西班牙语,但很容易跟进

相关问题 更多 >