Python替换字符串

时间:2015-10-06 19:54:52

标签: python

我正在尝试创建一个简单的刽子手游戏,目标输出如下: 玩家选择字母m
输出:m______
你找到了字母m
猜测左:7
输入猜测
但是,我得到的输出是这样的: 你找到了字母m
" _________" (无报价)
猜测左:7
输入猜测

我想知道为什么_____没有被m________取代

word = "mystery"
solved = 1
guesses = 7
solver = 0
o = "_______"
while solved == 1:
    print(o)
    print("Guesses Left:", guesses)
    print("Input guess")
    guess = str(input())
    x = word.find(guess)
    if x > -0.5:
        print("You have found the letter", guess)
        z = o[x:x]
        o.replace(_, guess)
        solver = solver + 1
        if solver == 7:
            print("YOU WON!!!!")
            solved = 2
    else:
        guesses = guesses - 1
        if guesses == 0:
            print("Out of lives...")
            solved == 0

谢谢!

2 个答案:

答案 0 :(得分:1)

因为字符串在python中是不可变的,所以当你调用o.replace(_,guess)时,replace实际上会创建另一个具有必要替换的字符串实例。因此,您需要将返回值分配回o,如下所示:

o=o.replace('_',guess)

ALSO:

o.replace实际上会用第二个字符串替换第一个字符串的每个实例,这可能不是您预期的输出。我会改用这一行:

o = o[0:x-1] + guess + [-x-1:-1]

侧面注意:

这只有在猜测只出现一次时才会起作用,你可以做很多事情来使这个刽子手游戏变得冗长(多个字母出现,输入不仅仅是一个字母等)

答案 1 :(得分:0)

这是问题

o.replace(_, guess)

返回被替换的值但是o永远不会改变。

更改var的正确方法:

o = o.replace("_", guess)