我正在创建一个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中用下划线替换(一个字母可以代替多个下划线)。
答案 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