用正确的猜测字母替换下划线,Python hangman

时间:2019-07-25 14:44:06

标签: python

我正在创建一个hang子手游戏,无法用猜出的正确字母替换'_'。

我看到了其他答案,但仍然找不到解决方案。我无法理解:Python hangman, replacing letters?


# some code

#vars
real_word = random_word()
secret_word = str(['_'] * len(real_word))
attempts = 999
letter = []
letters_guessed = []

# some code

# If correct guess  
if letter in real_word:
        # Here replace '_' with letter # IF CORRECT


预期结果:如果猜中了正确的字母,请在secret_word中用下划线替换(一个字母可以代替多个下划线)。

4 个答案:

答案 0 :(得分:0)

首先,尝试执行:

print(str(['_'] * len(real_word)))

要了解为什么应改用join

然后,只需遍历您的字符串/列表或您选择的任何内容并替换所需的字符:

real_word = "hello"
secret_word = '_' * len(real_word)

letter = "l"

if letter in real_word:
    secret_word = ''.join(c if real_word[i]!=letter else real_word[i] 
                          for i,c in enumerate(secret_word))

print(secret_word)

打印

__ll_

答案 1 :(得分:-1)

如果我正确理解了您的问题,您可以这样做。但是,按照您的方式使用字符串和列表会使操作变得复杂。

# some code

#vars
real_word = "somewords"
secret_word = str(['_'] * len(real_word))
underscore_indices = [2 + 5*n for n in range(len(real_word))]
attempts = 999
letter = "s"
letters_guessed = []

# some code

# If correct guess
if letter in real_word:
    for char_index in range(len(real_word)):
        if letter == real_word[char_index]:
            secret_word = secret_word[:underscore_indices[char_index]] + letter + \
                          secret_word[underscore_indices[char_index] + 1:]

print(secret_word)  # ['s', '_', '_', '_', '_', '_', '_', '_', 's']

答案 2 :(得分:-1)

代码

real_word = 'stackoverflow'
secret_word = '_' * len(real_word)
attempts = 999
letter = []
letters_guessed = []



# some code
to_try_letters = ['s', 'x', 'c', 'o', 'f', 'l', 'a']
# If correct guess  
for letter in to_try_letters:
  letters_guessed.append(letter)
  if letter in real_word:
    index = [i for i, l in enumerate(real_word) if l == letter]
    for i in index:
      secret_word = secret_word[:i] + letter + secret_word[i+1:]
  print(secret_word)

输出

s____________
s____________
s__c_________
s__c_o_____o_
s__c_o___f_o_
s__c_o___flo_
s_ac_o___flo_

答案 3 :(得分:-2)

跟踪当前字母的最简单方法是使用列表。列表是可变的,因此可以在中间轻松更改值。使用以下代码,它将交换出匹配的字母。

real_word = "test"
secret_word = ["_"] * len(real_word)

guess = input("Guess letter: ")

# Loop through the letters in the real word
for i, letter in enumerate(real_word):
  # Check if the current looped letter is equal to the guess
  if letter != "_" and guess == letter:
    # Set the underscore at that position to the correct letter
    secret_word[i] = letter

# Output list as joined string
print("".join(secret_word))

凭猜测s,代码将输出t__t