将字符串中的字母替换为列表中相同位置的相同字母-Python

时间:2018-09-26 22:12:07

标签: python python-3.x

我是Python的初学者,并且在制作基本的Hangman游戏方面最困难。我正在猜测一个正确的字母时应该填补空白。只是寻找一种简单的初学者方法来做到这一点。 这是我正在尝试的当前无法解决的问题:

word = random.choice(word_list)
word_dis.append("*" * len(word))
for chtr in word:
     chtr_pos = word.find(current_guess)
     print(chtr_pos)
     if chtr == current_guess:
          word_dis[chtr_pos] = chtr

我得到:

list assignment index out of range

2 个答案:

答案 0 :(得分:0)

尝试一下:

word = random.choice(word_list)
word_dis = list("*" * len(word))

num_guesses = len(word)
while(num_guesses > 0):
    current_guess = input("Enter your guess")
    chtr_pos = word.find(current_guess)
    if chtr_pos is not -1:
        word_dis[chtr_pos] = word[chtr_pos]
    num_guesses -= 1
    print(word_dis)

答案 1 :(得分:0)

我试图使它尽可能地分解,以便您拼凑出如何创建它并自己制作的方法。

word = 'random'
word = list(word)
blank = '-'*len(word)

while blank != ''.join(word):
    print(blank)
    letter = input('Enter a letter: ')
    if letter in word:
        x = word.index(letter)
        for idx, item in enumerate(blank):
            blank = list(blank)
            blank[x] = letter
            blank = ''.join(blank)
    else:
        continue

print('Congratulations! The word was {}'.format(''.join(word)))

由于我没有您的单词列表,因此我使用了预先选择的单词。

您可以做的就是将您的单词设为list,现在它将使每个字母都带有自己的index,我们可以使blank的长度相同。< / p>

接下来,我们可以进行一个循环,直到它们匹配为止。在这里,我使用''.join(word)作为比较来维护list版本,但仍然可以进行比较。

然后我们可以进行letter的猜测和if letter in word,然后从单词word.index(letter)中获得该字母的索引,有了这个索引,我们现在可以enumerate(blank)了,我们可以访问item and index,并且可以在index的{​​{1}}版本中替换相应的list,然后将blank放回原处。

此过程将一直持续到两个单词匹配为止,然后在循环中断后我们可以打印''.join(blank

自行制作,但这只是让您动起来的模板,欢呼!