我正在尝试创建一个简单的刽子手游戏,目标输出如下:
玩家选择字母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
谢谢!
答案 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)