我正在制作一个刽子手游戏,但有些东西我无法弄清楚。
我可以使用
隐藏字母guessed = "_"*len(guess)
但它也隐藏了空间。例如,如果我的话是复仇者'它将隐藏12个字符而不是11个。如何单独取消隐藏/留空?这就是我到目前为止所做的:
def getHiddenWord():
guess = getRandomWord().lower()
guessed = "_"*len(guess)
if "_" in guessed is " ":
print(guessed.replace("_", " "))
else:
print("The Word is:", guessed)
return guessed
答案 0 :(得分:1)
使用re.sub
guessed = re.sub(r'\S', '_', guess)
\S
将匹配任何非空格字符。因此,上述re.sub
函数将使用_
替换输入字符串中的任何非空格字符。
示例:的
>>> import re
>>> s = 'the avengers'
>>> re.sub(r'\S', '_', s)
'___ ________'
>>>
或
>>> ''.join(['_' if not i.isspace() else i for i in s])
'___ ________'
>>>
答案 1 :(得分:0)
一种简单的方法:
def getHiddenWord(guess):
guessed = ''
for c in guess.lower():
if c != ' ':
guessed += '_'
else:
guessed += ' '
return guessed
您的方法存在的问题是您使用此方法:
guessed = "_"*len(guess)
它占用了字符串的整个长度,并且还计算了空白空间。如果由于某种原因你需要在len的计数中排除空格,你需要使用它:
guessed = "_" * (len(guess) - guess.count(' '))
但在你的情况下,你很可能不需要它。
另请注意,函数getHiddenWord(guess)
不会更改原始单词,但会创建一个新单词并将其返回。