Python 随机猜字游戏

Python 随机猜字游戏,python,function,python-3.x,random,words,Python,Function,Python 3.x,Random,Words,我想创建一个单词猜测游戏,程序从我的单词列表中随机选择一个单词,用户必须猜测这个单词 用户一次只能猜测一个字母 用户只允许有6次失败的猜测。(使用6次失败尝试时失败) 如果用户在6次尝试失败之前猜到完整单词,则获胜 因此,我的课程面临着很多问题: 在下一轮猜测时,如何使猜测的字母保持空白 如果单词有两个相同的字母,我如何在空白处也显示它 如何显示每一轮用户的所有遗漏字母 以下是我到目前为止所做的: import random wordlist = ['giraffe','dolphin',

我想创建一个单词猜测游戏,程序从我的单词列表中随机选择一个单词,用户必须猜测这个单词

  • 用户一次只能猜测一个字母
  • 用户只允许有6次失败的猜测。(使用6次失败尝试时失败)
  • 如果用户在6次尝试失败之前猜到完整单词,则获胜
因此,我的课程面临着很多问题:

  • 在下一轮猜测时,如何使猜测的字母保持空白
  • 如果单词有两个相同的字母,我如何在空白处也显示它
  • 如何显示每一轮用户的所有遗漏字母
  • 以下是我到目前为止所做的:

    import random
    
    wordlist = ['giraffe','dolphin',\
                'pineapple','durian',\
                'blue','purple', \
                'heart','rectangle']
    
    #Obtain random word
    randWord = random.choice(wordlist)
    
    #Determine length of random word and display number of blanks
    blanks = '_ ' * len(randWord)
    print ()
    print ("Word: ",blanks)
    
    
    #Set number of failed attempts
    count = 6
    
    #Obtain guess
    while True:
        print ()
        guess = input ("Please make a guess: ")   
        if len(guess) != 1:
            print ("Please guess one letter at a time!")
        elif guess not in 'abcdefghijklmnopqrstuvwxyz':
           print ("Please only guess letters!")
    
    #Check if guess is found in random word
        for letters in randWord:
            if guess == letters:
                letterIndex = randWord.index(guess)
                newBlanks = blanks[:letterIndex*2] + guess + blanks[letterIndex*2+1:]
                print ("Guess is correct!")
            else:
                count -=1
                print ("Guess is wrong! ", count, " more failed attempts allowed.")
        print() 
        print("Word: ",newBlanks) 
    
    我希望获得的结果(对于randWord‘紫色’):

    Word:\uuuuuuuuuuuuuuu
    错过:
    请猜一猜:我
    猜对了!
    单词:uuuuuuuu
    错过:
    请猜一猜:z
    猜错了!允许再进行5次失败的尝试。
    单词:uuuuuuuu
    错过:z
    请猜一猜:哦
    猜错了!允许再进行4次失败的尝试。
    单词:uuuuuuuu
    错过:z,o
    请猜一猜:p
    猜对了!
    单词:p_u_pl_u
    错过:z,o
    请猜一猜:e
    猜对了!
    单词:p_uPL e
    错过:z,o
    请猜一猜:r
    猜对了!
    单词:p_rp l e
    错过:z,o
    请猜一猜:u
    猜对了!
    单词:p u r p l e
    你赢了!
    
    我该如何使猜到的字母在到达目的地时保留在空白处 下一轮的猜测

    只需存储包含猜测字母和空格的字符串,以便下一轮使用。您每次都要从
    单词列表中重新计算它(也可以每次重新计算,但是您需要修改字母搜索功能,请参见答案2)

    如果单词有两个相同的字母,我如何在空白处也显示它

    修改您的搜索循环,它应该在找到第一个匹配的字母后继续搜索

    letterIndex=randWord.index(guess)
    将只返回字符串中第一次出现的guess

    如何显示每一轮用户的所有遗漏字母


    将它们存储在单独的字符串或列表中。所以你每次都可以打印出来。

    我建议使用
    join
    和一个简单的列表理解重新构建它,使用一个包含所有猜测的字符串
    gusted
    ,比如。还要注意的是,检查正确/不正确的字母不会以这种方式工作,但会减少单词中非猜测字母的每个字母的计数。如果在randWord:
    中进行猜测,则使用
    。此外,如果
    guess
    不是一个字母,则可以对
    while
    循环的条件使用
    count
    ,并对循环的下一次迭代使用
    continue

    将所有这些放在一起,您的代码可能会如下所示:

    guessed = ""
    while count >= 0:
        guess = input ("Please make a guess: ")   
        # ... check guess, continue if not a letter
        guessed += guess
    
        if guess in randWord:
            # ... print 'correct', else 'not correct', decrease count
    
        newBlanks = " ".join(c if c in guessed else "_" for c in randWord)
        print("Word: ",newBlanks) 
    

    你可能想看看@AlexisPigeon Whops,没看到这个。但他并没有双重职位。。。他三次发帖!建议在没有答案的情况下结束其他问题。@tobias_k是的,我停止了计数。。。