2017-06-20 31 views
0

嗨,所以我想創建一個蟒蛇遊戲的蟒蛇, 我能夠揭示隱藏的字母,當用戶輸入一個正確的字母使用這種方法:hang子手遊戲蟒蛇能夠取代隱藏的字母,但不拿起它離開的地方

def getGuessedWord(): 
    import re 
    guessed = re.sub(r'\S', '_', word) 
    l = checkLetterInWords() 
    if l == True: 
     new = "" 
     for index, char in enumerate(word): 
      if char == letter: 
       new += letter 
      else: 
       new += guessed[index] 
     guessed = new 
     print(guessed, "\n") 
    return guessed 

然而,當我輸入另一正確的字母,它不會離開的地方顯示出來。例如:

這個詞是西瓜

輸入:瓦特

輸出:W_ _ _ _ _ _ _ _ _


第二輸入:一個

輸出: _ a _ _ _ _ _ _ _ _

如何使輸入像

w a _ _ _ _ _ _ _ _?

我看了一堆其他方法在stackoverflow但他們都沒有工作。有人能幫我弄明白嗎?謝謝!

+0

你不應該在每次運行函數'getGuessedWord()'時間導入're'模塊。 –

+1

此代碼段是不完整的。什麼是'word'和'checkLetterInWords()'的定義是什麼?爲什麼功能'getGuessedWord'沒有參數? –

回答

2

我這個重組碼了一點,所以,它需要每一個字母用戶猜測,如果正確它添加到單詞。

word = "example" 
guessWord = ['-'] * len(word) 

def guessLetter(letter): 
    for i, c in enumerate(word): 
     if c == letter: 
      guessWord[i] = letter 

print("".join(guessWord)) # -> '-------' 
guessLetter('e') 
guessLetter('a') 
guessLetter('x') 
guessLetter('m') 
print("".join(guessWord)) # -> 'exam--e' 

這樣:

  • 無需正則表達式(也通常是那些在文件的頂級進口 ,而不是一個函數內)。
  • 較短的運行時間。我們只經過一次這個詞的「----」版本。大O符號:O(n)。
  • 更短的代碼。
0

你必須保持過去的狀態,我改變你的代碼如下:

word = "ramin" 
letter = 'r' 

import re 
correct = re.sub(r'\S', '_', word) 

def getGuessedWord(): 
    global correct 
    if letter in word: 
     new = "" 
     for index, char in enumerate(word): 
      if char == letter: 
       new += letter 
      else: 
       new += correct[index] 
     correct = new 
     print(correct, "\n") 
    return correct 

letter = 'r' 
print(getGuessedWord()) 
letter = 'a' 
print(getGuessedWord()) 

# Output: 
# ('r____', '\n') 
# r____ 
# ('ra___', '\n') 
# ra___