Python 如何在刽子手游戏中取消隐藏单词之间的空格?
我正在做一个刽子手游戏,但有些事情我搞不懂 我能用电脑隐藏这些字母Python 如何在刽子手游戏中取消隐藏单词之间的空格?,python,python-3.5,Python,Python 3.5,我正在做一个刽子手游戏,但有些事情我搞不懂 我能用电脑隐藏这些字母 guessed = "_"*len(guess) 但它也隐藏了空间。例如,如果我的单词是“复仇者”,它将隐藏12个字符,而不是11个。如何取消隐藏/保留空间?这就是我到目前为止所做的: def getHiddenWord(): guess = getRandomWord().lower() guessed = "_"*len(guess) if "_" in guessed is " ":
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
使用re.sub
\S将匹配任何非空格字符。因此,上面的re.sub函数将用0替换输入字符串中的任何非空格字符
例如:
或
一个简单的方法是:
def getHiddenWord(guess):
guessed = ''
for c in guess.lower():
if c != ' ':
guessed += '_'
else:
guessed += ' '
return guessed
您的方法的问题在于您使用了以下方法:
guessed = "_"*len(guess)
guessed = "_" * (len(guess) - guess.count(' '))
它将占用字符串的整个长度,并对空空间进行计数。如果出于某种原因需要排除len计数中的空白,则需要使用以下方法:
guessed = "_"*len(guess)
guessed = "_" * (len(guess) - guess.count(' '))
但在你的情况下,你很可能不需要它
还要注意的是,函数getHiddenWordguess不会更改原始单词,而是创建一个新单词并返回它。guessed=\u*lenguess只是生成一个字符串,其下划线的数量与guess中的字符数量相同。您已丢失有关空间位置的所有信息。你最好简单地用u替换guess中不是空格的东西。我该怎么做?一个简单的方法是在guess中循环,并将所有不是空格的东西都改为u。
guessed = "_" * (len(guess) - guess.count(' '))