首页 文章

元素不从列表中删除

提问于
浏览
-1

我正在创建一个刽子手程序,我使用 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 删除字母?

2 回答

  • 0

    我能够运行你的代码 . 建议删除多次出现的字母的小改动 .

    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
    

    list.remove() - 仅删除第一次出现的字母 . 你可以使用:

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

    我重新创建了它,它对我有用:
    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
    

    这样你就可以取代一个完整的列表,每次插入rigth字母时都会删除,你将有一个空的(实际上是'_'个字符)列表,每次插入正确的字母时都会将字母添加到其位置,就像你那样可以像这样打印当前的单词
    enter image description here

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

相关问题