我试图在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: ")
答案 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/