Python,更改字串

时间:2018-10-22 00:20:38

标签: python

我的代码需要一些帮助。我目前正在用python编码hangman,并给出了单词和字母,我试图使单词变成下划线,并显示正确猜出的字母。 将给出一个示例输入('headphones',['e','d'])将返回'_e_d____e_'。

result = ''
matches = 0
for i in past_guesses:
    if i in word:
        result += i
    else:
        status += '_'
        matches += 1

return result

这是我尝试过的方法,但是我不断得到“ ed”作为回报。任何人都知道为什么会发生这种情况以及我该如何解决?

3 个答案:

答案 0 :(得分:0)

uid子句中,您要向else而不是status附加下划线。

编辑:正如朱利安(Julien)指出的那样,您正在遍历错误的内容。

如果您打算产生一个与原始单词一样长的字符串,则您的循环应执行与单词长度相同的次数;也就是说,您应该遍历result的字母,而不是word的字母。

换句话说,如果用户进行了三个猜测,则您的函数将仅返回三个字母的字符串,这显然不是您想要的。

答案 1 :(得分:0)

计算机的逻辑与人类的逻辑相同,您需要检查单词的字母是否在猜测中,而不是相反。在这两种情况下,您都需要更新results ...

result = ''
for i in word:
    if i in past_guesses:
        result += i
    else:
        result += '_'

或更多pythonic:"".join(i if i in past_guesses else '_' for i in word)

答案 2 :(得分:0)

这是a子手游戏的通用模板。创建一个board的{​​{1}}的{​​{1}}。如果我们的lenword中,我们将替换此board的索引。我们还可以创建列表guess来附加所有猜测,以便我们可以跟踪是否已经尝试输入。

从这里我们可以建立一个word循环,一旦我们的guessed就会中断。从用户那里获取while,然后检查是否已使用它。如果不是,则使用列表推导检索索引来评估board == word是否在guess中。如果找到任何索引,我们将转换guess到列表,然后替换它们,然后将word放回字符串,如果没有,我们可以打印board

在继续下一个循环之前,我们可以将.join()附加到guess not in word列表中,并打印最新的guess

guessed