我是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
答案 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
自行制作,但这只是让您动起来的模板,欢呼!