2017-06-20 63 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___