Python开发hangman游戏如何将字符串所有字符替换为下划线生成占位符
错误原因
str.replace() 方法的第一个入参要求是单个明确的待替换子串,你传入的(string[i]) for i in range (0, len (string))是生成器表达式,完全不符合方法的参数格式要求,所以触发了对应的语法错误。
正确实现代码
你要实现「每个字符对应一个下划线,下划线之间用空格分隔」的效果,最简洁的写法如下:
target_word = 'luis' # 遍历目标词每个字符生成对应下划线,用空格拼接所有下划线 hidden_word = ' '.join('_' for _ in target_word) print(hidden_word)
运行后输出结果正好是你要的_ _ _ _。
如果不需要下划线之间的空格,直接把拼接用的分隔符改成空字符串即可:
hidden_word = ''.join('_' for _ in target_word) # 输出为 ____
可选替代实现
如果你坚持要用replace实现也可以,需要循环遍历每个字符做替换,写法如下:
target_word = 'luis' hidden_word = target_word for char in target_word: hidden_word = hidden_word.replace(char, '_') # 加空格的话额外执行一步:hidden_word = ' '.join(hidden_word) print(hidden_word)
这种写法效率低于直接用join生成的方案,更推荐用前者。
内容的提问来源于stack exchange,提问作者Luismaia1994
相关产品推荐
相关产品推荐

