2017-07-19 74 views
-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中刪除?

+1

我無法重現。當我運行你的代碼時,你的代碼從'wordList'中刪除了字母。 – davedwards

+0

注意:如果字母是'wordList'超過一次,那麼'wordList.remove(字母)'只會撤銷了一審。 (例如,如果單詞'= 「你好」''然後wordList'將'[ 'H', 'E', 'L', 'L', 'O']',並且如果信'=「L'',然後運行'wordlist.remove(字母)後','wordlist'將'[ 'H', 'E', 'L', 'O']',這意味着''L''仍然會在單詞表' '。)你可能會更好地使用這一套。 – 3D1T0R

回答

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 

這樣,你有,而不是一個完整列表,刪除每次插入分辯封信的時候,你將有一個空的(實際上完全「_」字符s)列表,每次插入正確的字母時添加字母的位置,這樣你可以打印當前的字像這樣 enter image description here

我做了這樣的比賽,它對我的​​github,說明書在西班牙,但它很容易跟進