2017-06-09 16 views
0

我正在做一個hang子手遊戲,但有些東西我找不出來。我如何取消隱藏hang子手遊戲中單詞之間的空格?

我能夠使用

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

'guessed =「_」* len(guess)'只會產生一串與'guess'中的字符一樣多的下劃線。你已經失去了關於空間位置的所有信息。你最好用_替換'guess'中的_aren't_空格。 – pvg

+0

我該怎麼做? – Almira

+0

一個簡單的方法是循環猜測並將不是空格的所有內容都更改爲_。 – pvg

回答

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]) 
'___ ________' 
>>> 
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)不會更改您的原始單詞,但會創建一個新單詞並將其返回。