如何在刽子手游戏中取消隐藏文字之间的空格?

时间:2017-06-09 03:56:38

标签: python python-3.5

我正在制作一个刽子手游戏,但有些东西我无法弄清楚。

我可以使用

隐藏字母
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

2 个答案:

答案 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)不会更改原始单词,但会创建一个新单词并将其返回。