2011-12-05 55 views
-1

基本上我想做的是做一個hang子手遊戲。雖然我在比賽中有所轉變。我想要做的是讓程序需要幫助從列表中刪除到另一個

因此,如果用戶輸入「a」作爲第一次嘗試,則遊戲然後將找到其中具有「a」的所有單詞並將它們從列表中移除等等,這意味着你幾乎總是會錯過前4個元音。最終你會讓程序堅持一個單詞,因爲沒有一個有效的單詞可以切換到沒有用戶選擇的字母。

我的問題是,我怎麼能讓所有的刪除單詞進入刪除列表?

# HANGMAN 
import random 

def main(): 
    num_wrong=0 
    word_list=['car', 'road', 'truck', 'dog', 'desk', 'tree', \ 
       'cat', 'zug', 'acu', 'python'] 
    left=['a','b','c','d','e','f','g','h','i','j','k','l',\ 
      'm','n','o','p','q','r','s','t','u','v','w','x',\ 
      'y','z'] 
    let_guessed=[] 
    let_unguessed=['a','b','c'] 

    finished=False 
    r=random.randint(0,len(word_list)-1) 
    answer=word_list[r] 
    current='_'*len(answer) 

    show_status(current,num_wrong,left) 

    guess=input('Guess a letter: ') 
    while num_wrong<6 and not finished: # after 6 you lose 
     left.remove(guess) 
     if guess not in answer: 
      num_wrong+=1 
      print(guess,'is not in the word') 
     else: # if the guess is correct 
      print(guess,'is in the word') 
      # modify current 

      for z in range(len(answer)): 
       # check to see if we have an alphabetic at that spot already 
       if answer[z]==guess: 
        current=current[0:z]+guess+current[z+1:] 
        if answer==current: 
         print('You win!') 
         finished=True 

     show_status(current,num_wrong,left) 
     if not finished: 
      guess=input('Guess a letter: ') 

def show_status(str1,x,letters): 
    for a in str1: 
     print(a+' ',end='') 
    print('You have made',x,'wrong guesses so far.') 
    print('The following letters are still available:') 
    str1='' 
    for each in letters: 
     str1+=each+' ' 
    print(str1) 

main() 
+0

你缺少你的問題中一些字母,後「有計劃......」 –

回答

3

只是要的話一個新的列表,而由用戶選擇的信:

word_list = [w for w in word_list if chosen_letter not in w] 
+0

我猜我的意思是我將如何實現該代碼? –