在匹配 Hangman 的输入后,如何将每个元素或字母表显示为破折号?

How do I display each element or alphabet as dash after it matches the input for Hangman?

我一直在断断续续地编程,但最近我更加活跃并完成了一些基本项目。然而,在过去的 3 周里,我一直被这个特殊问题所困,似乎仍然无法解决。查看了一些代码并尝试了并且只能改进某些部分。下面是我的完整代码。

我遇到的问题是我在标题中提到的问题,我需要将神秘词显示为破折号,当我猜测未知词时,它应该作为唯一的词出现。一个问题是当我猜对单词时,它只显示单个字母并立即重置。

import random

    word_list =[
    "SAXOPHONE",
    "THEREMIN",
    "XYLOPHONE",
    "TROMBONE",
    "RECORDER",
    "OCARINA",
    "HANG",
    "GUITAR",
    "PIANO",
    "DIDGERIDOO",
    "CELLO",
    "CLARINET",
    "BONGO",
    "DRUM",
    "FLUTE",
    "ERHU",
    "DIZI",
    "HARMONICA",
    "GONG",
    "GUZHENG"
    ]


pick_word = random.choice(word_list)
pick_letter = list(pick_word)
print(pick_letter)

print("Welcome to Hangman Instrumental")


turns = 10

while turns > 0:

      # input of players(input to accept both lower and upper case)
       player_in = input(str("\nEnter a Character: ")).upper()
  
      # check if input is the same as the pick letter
       if player_in in pick_letter:
              if player_in in pick_letter:
                      print(player_in)

              
        elif len(player_in) != 1:
                 print("Invalid input please try again")

        
        else:
                turns -= 1
                print("You have ",turns, " turns left")
                if turns == 0:
                print("You Lose !")


  

保留玩家所有猜测的列表。当你开始一个新游戏时,将 all_guesses 设置为 [] 然后,从控制台集读取字母:

all_guesses.append(player_in)

现在您可以只显示该列表中的秘密单词中的字母:

display_word = ''
for c in pick_word:
    if c in all_guesses:
        display_word += c
    else:
        display_word += '-'

然后打印出 display_word 任何你喜欢的。您可以将所有这些组合成一个 Python 表达式:

display_word = ''.join(c if c in all_guesses else '-' for c in pick_word)

它使用了三个您可能还没有见过的想法(if-else 表达式、生成器表达式和 .join() 字符串成员函数)所以如果您觉得它像火星人,那没关系。将其视为您稍后将学到的很酷的东西的先睹为快。