Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在刽子手游戏中取消隐藏单词之间的空格?_Python_Python 3.5 - Fatal编程技术网

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(' '))