python在我的猜字游戏中很难过

时间:2018-04-25 06:42:37

标签: python python-3.x

我试图在python中做一个猜谜游戏,但我无法想出一些东西。我必须输入一个单词,它会打印很多空格,而这个人就想猜这个单词。输入后,它必须看起来像这样。用户将输入一个字母,并且假设看起来像这样(单词是狗):

  
    

输入一封信:a

         

到目前为止,你有:

 *** 
  

如果他们猜测" o"例如,它将用' o替换*。等等,直到你得到所有的话。这是我无法弄清楚的,有人可以帮助我吗?这是我的远程计划:

def main():
    letters_guessed = set()

    # Read word 
    word = input("\n Please Enter a word: ")
    # print 100 spaces
    print("\n" * 100)
    # Storing the length of the word
    word_length = len(word)
    guess = '*' * word_length


    while True:
        print ("So far you have: ", 

        guess_letter = input ("Please guess a letter: ")
        if len(guess_letter) != 1:
            print ("Please guess one letter at a time")
        if guess_letter in letters_guessed:
            print ("\n You already guessed that letter, please try again")
        letters_guessed.add(guess_letter)

        if set(word) == set(letters_guessed):
            break

    print("You won, the word is " % word)

有人试图帮助我,但我只是不明白这是如何工作的,因为我是该程序的新手,我希望能够理解它。谢谢。这是他的输出,只是其中的一部分。

while True:
    print ("So far you have: ", "".join([c if c in letters_guessed else "*" 
for c in word]))
    guess_letter = input ("Please guess a letter: ")

1 个答案:

答案 0 :(得分:1)

我首先解释您收到的解决方案代码。以下代码:

[c if c in letters_guessed else "*" for c in word]

生成一个列表。如果您看到方括号[和],那么我们列出可能会创建列表。

现在你的朋友正在使用的是一台发电机。它是创建for循环的简短方法。换句话说,这会做同样的事情。

word = "dog"
letter_guessed = "go"
ourList = list() #new list
for letter in word: #we check every letter in the word
    if letter in letter_guessed: #if our letter has been guessed
        ourList.append(letter) # we can show that letter in our word
    else:
        ourList.append("*") # if the letter has not been guessed, we should 
        # not show that letter in our word, and thus we change it to a *
print(ourList)

这给了我们以下列表:[" *"," o"," g"]

你的朋友接着做的是拿这个清单,然后使用加入:

"".join[ourList]

这是将字母列表转换回字符串的好方法。

请参阅:https://www.tutorialspoint.com/python/string_join.htm

您自己的代码有一些问题。你有可能没有复制一切吗?

在python中,使用制表符会影响程序的运行方式。因为你在

之前放了一个标签
print("You won, the word is " % word)

你每次都会运行这一行,而不是只在break语句被激活时运行!

你有类似的问题.add!试着看看你是否能自己发现它。

我还建议写作

print("You won, the word is " + word)

因为这更容易使用。 (要获得更高级的格式,请查看.format(),请参阅https://pyformat.info/