如何存储来自hangman函数的用户输入,这样每次运行for循环时,它都会记住用户已经猜到了字母。你知道吗
当hangman函数第一次运行时,如果用户的输入是'gera',这很好,它应该返回第五次猜测;问题是如果用户现在输入'mo',它不会像这个gera\uumo那样显示,相反它会打印\uuuumo;忘记用户以前的'gera'输入。 我怎样才能存储过去的输入,以便代码回忆所传递的内容?你知道吗
def get_guessed_word(secret_word, letters_guessed):
a = ""
for char1 in secret_word:
if char1 in letters_guessed:
a += char1
else:
a += "_ "
print(a)
def get_available_letters(letters_guessed):
a = string.ascii_lowercase
for char1 in a:
if char1 in letters_guessed:
a = a.replace(char1,"")
print(a)
def hangman(secret_word_user_to_guess):
secret_word_user_to_guess = 'geranimo'
for index in range(6,1,-1):
print('You have', index,'guesses left.')
#print('Available letters: abcdefghijklmnopqrstuvwxyz')
letters_guessed = input('Check a word: ')
get_guessed_word(secret_word_user_to_guess, letters_guessed)
print('Available letters:')
get_available_letters(letters_guessed)
让我们看看你的函数,因为有一个概念你似乎没有:
行
for char1 in secret_word:
遍历单词,将每个字符依次拉入char
。这没有错,几乎所有的解决方案都必须使用它。你知道吗接下来,您将执行} and ^{} operators 来手工编写代码。你知道吗
for thing in letters_guessed:
。正如@ForceBru指出的那样,这有一个问题,即Python提供了^{然而,当你刚刚开始的时候,可以重新发明轮子几次。如果没有别的,它可以帮助你了解引擎盖下发生了什么。你知道吗
我认为你错过或误解的是:当你有了
char1 == thing
你就知道了一些东西。你完全可以说“是的,这封信已经猜到了”,然后你可以继续展示这封信。你知道吗但是如果这个条件不是真的,你什么都不知道。你不能简单地说“哦,如果那不是真的,那么画一个下划线”,因为你还没有完成检查!
请记住,
for thing in letters_guessed:
循环正在检查猜测的每个字母。这意味着,即使字母中的这个特殊字符可能与单词中的当前字符不匹配,也有可能其他字符将匹配,因此必须保持循环。你知道吗像这样:
有几种方法可以解决它,就像ForceBru已经提到的那样。但要按照评论中的建议添加一个集合:
您可以很容易地做到这一点:
或者,使用发电机:
顺便说一句,
letters_guessed
可以是字符串("eikprs"
),或者,如果顺序不重要,可以是set
:set("eikprs")
。你知道吗您也可以尝试以下方法:
相关问题 更多 >
编程相关推荐