gpt4 book ai didi

python - 仅对具有重复字符的字符串中的一个字符使用 .replace()

转载 作者:行者123 更新时间:2023-11-30 23:31:24 32 4
gpt4 key购买 nike

我遇到了这个刽子手问题,在这一部分中,我尝试将占位符 '_ ' 替换为他们正确猜测的字符。例如如果 secretWord = 'lettuce',并且他们猜到了 e,我希望它通过 SecretWord 并检查 e 是否在其中,然后替换该 '_ 'e,因此返回_ e_ _ _ _ e

我的代码是:

创建 secretWord 的占位符字符串表示形式

so Far = '' 
for char in secretWord:
soFar = soFar + '_ '

检查/用正确的字符替换占位符

for char in secretWord:
if char in lettersGuessed:
soFar.replace('_ ', str(char))
print soFar

但在 pythontutor.com 中,其中 secretWord = 'lettuce'lettersGuessed = ['z', 'x', 'q', 'l', 'e', ' t', 't', 'u', 'c', 'e'] 我的输出是:

    _ _ _ _ _ _ _ 
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;仅当您想要替换所有索引处与特定值匹配的所有字符时才适用。

替换索引处字符的方法是使用切片:

soFar = soFar[:index] + newChar + soFar[index+1:]

在这种情况下,secretWord 中的每个字符与 soFar 中的两个 个字符匹配,因此您必须将这些字符加倍:

soFar = soFar[:index*2] + newChar + soFar[index*2+1:]
<小时/>

但是你如何知道索引呢?不通过在字符串上调用 index 来实现同样的问题,返回具有该值的第一个字符的索引,而不是您想要的字符。使用 enumerate 函数为您进行计数:

for index, char in enumerate(secretWord):
<小时/>

正如 kevinsa5 所建议的,如果您使用列表而不是字符串,您将使事情变得更简单:

soFar = []
for char in secretWord:
soFar.append('_')

现在,替换就是:

soFar[index] = char

但是,如果将其作为字符串打印出来,它将看起来像 ['_', '_'] 而不是 _ _。要将其变成一个漂亮的字符串,您需要使用 join 方法:

print ' '.join(soFar)

关于python - 仅对具有重复字符的字符串中的一个字符使用 .replace(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19963802/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com