我正在尝试做一个问答节目,但我遇到了答案问题。 我想要的是替换答案的字符以显示为提示。示例:
answer = "I am just an example"
hintwouldbe = "I a_ j___ a_ e______"
hint2mightbe = "I am j___ an e_a___e"
我不太确定如何制作它。尝试使用循环(对于答案中的 c)和 string.replace 方法。还尝试了一些 re.translate 和 dicts,但我得到的代码非常大并且很难理解。一定有一个更简单的方法所以...我在这里。
您认为哪种方式最有效/最容易实现这一目标?
编辑如果我可以选择要替换的位置,那就太好了。例如:如果单词有 6 个字符,则将 1,3 和 6 个字符替换为 _
编辑2:正确答案
经过一些更改后,我选择 Thomas Orozco 答案为有效,非常容易理解和重新创建:
from random import random
answer = "anything in here"
pista = [char if random() < 0.8 else "_" for char in answer]
pista2 = "".join(pista)
print(pista2)
最佳答案
字符串不能正确表示您想要执行的操作,列表会更好。
import random
def make_hint(chars, frequency):
hint_chars = [char if random.random() < frequency else "_" for char in chars]
return "".join(hint_chars)
answer = "I am just an example"
print make_hint(answer, 0.3)
print make_hint(answer, 0.5)
当然,这只是一个例子。在这里,我使用 random 来显示 30% 或 50% 的字符,但您可以使用不同的实现。
请记住,您可以在运行转换之前先对答案调用 .split()
以将其拆分为单词:
print " ".join(make_hint(word, 0.3) for word in answer.split())
关于python - python中固定位置的字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19479934/