2015-10-06 162 views
0

我试图创建一个简单的刽子手游戏,其目标输出是这样的: 玩家选择字母m
输出:m______
你已经找到字母m
猜测左: 7
输入猜
但是,我得到的输出是这样的: 你已经找到字母m
“_________”(不带引号)
猜测左图:7
输入猜Python的替换字符串

我很奇怪,为什么_____未与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 

由于更换!

回答

0

这里的问题是

o.replace(_, guess) 

返回替换值。可是,永远不会改变。

改变VAR正确方法:

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

因为字符串在Python一成不变的,当你调用o.replace(_,guess),更换实际上将创建一个具有必要的替换字符串的另一个实例。因此,你需要将返回值赋给回至O这样的:

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

ALSO:

o.replace实际上将与第二,这可能是无法取代的第一个字符串的每一个实例你预期产出。我反而用这条线:

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

边注:

这一点,如果有猜测的唯一一个出现只会工作,有很多的事情可以做,使这个刽子手游戏MROE详细(多个字母出现,比字母更多的输入等)