2015-10-06 305 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詳細(多個字母出現,比字母更多的輸入等)