2014-03-27 47 views
0

我一直堅持這一段時間了,我無法弄清楚該怎麼做。我知道它可能會涉及創建一個空的列表,然後將這些單詞添加到列表中,但是在檢索這些單詞時我沒有任何線索,因爲我從來沒有這樣做過。代碼本身起作用,它只是添加了我遇到麻煩的新功能。我如何讓我的蟒蛇hang子手遊戲的用戶輸入自己的單詞?

import random 
import sys 
#importing both random and time modules 

print("Hello!") 
playAgn = 'yes' 
animalNames = ['wildebeest','wolverine','woodlouse','woodpecker','yak','zebra'] 
#this is the list of words that the user will have to guess if they play the game multiple times 
while playAgn == 'yes': 
    secretWord = random.choice(animalNames) 
    #this line tells the computer to randomly select one of the words in the list "animalNames" 
    lives = 6 
    #Defining how many lives the user has 
    guessedletters = [] 

    print("Okay!\n Lets play hangman!!") 
    while lives > 0: 
     inword = False 
     #user has not guessed word yet so the boolean value is automatically off (False) 
     print("you have",lives, "lives") 
     #tells the user how many lives they have left 
     guessedletter = input("Guess a letter: ") 
     if len(guessedletter) > 1: 
      print("Error! Please only enter 1 letter at a time") 
      #if the user tries to guess something longer than 1 character the computer displays a message asking to only enter 1 letter at a time 
     elif guessedletter in guessedletters: 
      print("Sorry, you have already guessed this letter. Try again") 
      #if the user tries to guess a letter that has already been guessed the computer displays a message telling the user to choose another letter as they have already chose this one 

     else: 
      guessedletters+=str(guessedletter) 
      #adds the guessed letter to guessedletters variable 
      print("You have guessed:") 
      for letter in guessedletters: 
       print(letter.upper(),"") 
       #prints the letters already guessed in uppercase 
      shownword = "" 
      for letter in secretWord: 
       if letter in guessedletters: 
        shownword +=str(letter) 
        #if the letter is in guessedletters then add the letter to shownword(word displayed to user) 
        if letter == guessedletter: 
         inword = True 
         #inword is true as the guessed letter is in the secret word 

       else: 
        shownword+=str("_") 
        #the computer is now adding the underscores too the word being displayed to the user 
      print(shownword) 
      #the computer prints the word with the letters that the user has guessed so far (word including underscores for not yet guessed characters) 
      if "_" not in shownword: 
         print("Congratulations, you won! The word was '", shownword,"'") 
         #if there are no underscores(meaning the word is completed) tell the user they have won the game 
         break 
      elif inword == False: 
       #the guessed word is not in the secret word so the boolean value is now off (False) 
       print("No luck," , guessedletter , "is not in my word") 
       lives -= 1 
       #deducts a life for the wrong letter being guessed and also displays a message telling the user that the letter just guessed isn't in the secret word 


    if lives == 0: 
     print("You have run out of lives. The word was '",secretWord,"'") 
     #if the user runs out of lives and still hasn't guessed the word, tell them they failed to beat the game and also tell them the word 

    while True: 
     playAgn = input("Would you like to play again? yes/no: ") 
     if playAgn == 'no': 
      print("okay\n Goodbye!") 
      break 
     elif playAgn == 'yes': 
      break 

感謝很多的人誰可以幫助想出解決辦法:)

回答

2

你可以只換這樣的:

animalNames = ['wildebeest','wolverine','woodlouse','woodpecker','yak','zebra'] 

對於這一點:

animalNames = getNames() 

,並定義功能:

def getNames(): 
    names = [] 
    while True: 
     name = raw_input("Add a word to the list (or press enter to cancel): ") 
     if name == "": 
      break 
     else: 
      names.append(name) 
    return names 
+0

+1用於處理允許用戶跳過的情況...我太懶惰 –

+0

:)這個答案很好。這就是說,當你輸入可能的單詞時,玩hang子手是多麼的困難! –

+1

@FredMitchell熱門多人遊戲? –

0

看這句話:

animal_names.append(input("Enter Word To Word Pool:")) 

這樣呢?