我遇到了这个hangman问题,在这一部分中,我试图用他们正确猜测的字符替换占位符'_ '
。e、 如果secretWord = 'lettuce'
,并且他们猜到了e
,我希望它遍历secretWord并检查其中是否有e,然后用e
替换{_ e_ _ _ _ e
我的代码是:
secretWord
的占位符字符串表示形式so Far = ''
for char in secretWord:
soFar = soFar + '_ '
但是在pythontutor.com网站,其中secretWord = 'lettuce'
和{
_ _ _ _ _ _ _
l l l l l l l
l l l l l l l
l l l l l l l
l l l l l l l
l l l l l l l
l l l l l l l
l l l l l l l
所以基本上,它看到l
是用字母猜测的,既然它应该用那个字符代替{secretWord
中的话)。然后它无法替换其他任何字符,因为它们都不是'_ '
。。。。在
当您试图在某个位置替换一个字符时,您不想使用
replace
;它只适用于您要替换所有与某个值匹配的字符(在所有索引中)。在在索引处用字符替换的方法是:
在本例中,secretWord中的每个字符都匹配soFar中的两个字符,因此必须将它们加倍:
^{pr2}$但是你怎么知道指数呢?不是通过对有相同问题的字符串调用
index
,返回具有该值的第一个字符的索引,而不是您想要的那个。使用enumerate
函数为您继续计算:正如kevinsa5建议的那样,如果您使用列表而不是字符串,则可以使其更简单:
现在,替代品只是:
但是,如果将其作为字符串打印出来,它看起来像}。要将其转换为一个漂亮的字符串,您需要使用
['_', '_']
,而不是{join
方法:使用列表,而不是字符串:
另外,最好将
lettersGuessed
设为set
,而不是list
。因为您只关心集合中的成员身份,lettersGuessed
只包含唯一项是合适的。在现在的方法是,将每个
'_'
替换为secretWord
中出现的第一个猜测的字母。所以,当猜测的l
时,它用l
填充每个_
。在你可以做的是:
相关问题 更多 >
编程相关推荐