Python的hang子手游戏,没有工作

问题描述:

我想在Python中开发一个Hang子手游戏,并且我搞不明白为什么正确猜到的字母不被程序记住。Python的hang子手游戏,没有工作

例如,如果输入的字母在单词“hello”中,python会识别匹配,但当它提示输入另一个字母时,会忘记updt_list(具有输入字母的列表)。

如果有人愿意看一看我会很感激。

import time 


def pick_a_word(): 

    word = "hello" 
    return word 

def guess_a_letter(): 
    aletter = input("Please input one letter at a time:\n") 
    no_letters= len(aletter) 
    if no_letters > 1: 
     print("You inputed more than one letter! Don't forget- one at a time.\nLets try again..") 
     time.sleep(2) 
     return guess_a_letter() 
    else: 
     return aletter 


def blankLIST(aword): 
    blankList = len(aword) * "_" 
    return list(blankList) 

def check(aletter,aword,blankLIST): 

    updt_list= blankLIST(aword) 

    which_letter= aword.index(aletter) 

    updt_list[which_letter] = aletter 

    return updt_list 


def engine(): 

    guess=guess_a_letter() 
    wordtoguess=pick_a_word() 
    if guess in wordtoguess: 
     print("\n") 
     print("The letter is in the word") 
     print(check(guess,wordtoguess,blankLIST)) 

     time.sleep(1) 
    else: 
     print("\n") 
     print("The letter is not in the word") 

     time.sleep(1) 




def repeat(): 
    x = 0 
    while x <= 5: 
     lifes= 6- x 
     print("You have",lifes," attempts left") 

     engine() 

     x = x 

repeat() 
+0

'忘记updt_list'它强行记住'check'中新创建的值,将被返回,打印和 - 忘记。 – greybeard

请注意,这是非常不雅,如果你继续在这种情况下猜字母“l”会有问题...我没有更多的时间花在它,但它应该是足以推动你有点前进。它现在记住玩家的猜测,用户可以赢得比赛。我很抱歉...

import time 


    def pick_a_word(): 

     word = "hello" 
     return word 

    def guess_a_letter(): 
     #aletter = input("Please input one letter at a time:\n") 
     aletter = 'l' 
     no_letters= len(aletter) 
     if no_letters > 1: 
      print("You inputed more than one letter! Don't forget- one at a time.\nLets try again..") 
      time.sleep(2) 
      return guess_a_letter() 
     else: 
      return aletter 


    def buildWordLIST(aword): 
     blankList = len(aword) * "_" 
     return list(blankList) 

    def check(aletter,aword,updt_list, wordIndex=0): 

     which_letter= aword.index(aletter, wordIndex) 

     if updt_list[which_letter] != "_" and ((wordIndex + 1) < len(aword)): 
      wordIndex = which_letter + 1 
      check(aletter,aword,updt_list, wordIndex) 

     updt_list[which_letter] = aletter 

     return updt_list 


    def engine(mistakes, updt_list, correctGuesses): 

     youWinFlag = False 

     guess=guess_a_letter() 
     wordtoguess=pick_a_word() 
     if guess in wordtoguess: 
      print("\n") 
      print("The letter is in the word") 
      updt_list = check(guess,wordtoguess,updt_list) 
      print updt_list 
      correctGuesses += 1 
      if correctGuesses == len(wordtoguess): 
       print("YOU GUESSED THE WORD!") 
       youWinFlag = True 


      time.sleep(1) 
     else: 
      print("\n") 
      print("The letter is not in the word") 
      mistakes += 1 
      time.sleep(1) 

     return mistakes, updt_list, correctGuesses, youWinFlag 



    def repeat(updt_list): 
     x = 0 
     blankLIST = '' 
     correctGuesses = 0 
     while x <= 5: 
      lives= 6- x 
      print("You have",lives," attempts left") 

      results = engine(x, updt_list, correctGuesses) 
      x = results[0] 
      updt_list = results[1] 
      correctGuesses = results[2] 
      youWinFlag = results[3] 
      if youWinFlag: 
       x = 6 

    def initialize_game(): 
     wordtoguess=pick_a_word() 
     updt_list = buildWordLIST(wordtoguess) 
     return updt_list 

    updt_list = initialize_game() 
    repeat(updt_list)