我对编程很新,并且已经为自己设定了在Python上生成Hangman游戏的任务 . 我到目前为止的代码是在这篇文章的底部供参考:它几乎完成了,但当我尝试打印相同数量的下划线时,我有一个非常讨厌的问题,因为要猜到的单词中有字母 . 我不知道为什么,但是,尽管Python清楚地理解了,当我给出时
word = ['n','i','g','h','t']
作为我在内核中的输入词,它知道“night”是需要猜测的单词,它会打印一些下划线,这些下划线对应于我已分配给变量'word'的默认列表中的字母数,这是“无论如何”,即8个下划线,而不是5.我知道它知道“夜晚”是正确的词,因为我可以猜到它,这是最终的结果:
In [227]: attempt(word,'n')
>>> n i g h t _ _ _
>>> a b c d e f - - - j k l m - o p q r s - u v - x y z
最后留下三个空白的下划线 . 有没有人知道如何删除这些下划线而不影响程序的其余部分?
这是代码:
space,alphabet=' ',['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
word = ['w','h','a','t','e','v','e','r']
word_blanks = ['_' for letter in word]
def attempt(word,inp1=''):
if inp1 in word:
indeces=[i for i,val in enumerate(word) if val==inp1]
for i in indeces:
word_blanks[i]=inp1
if inp1 in alphabet:
loc=alphabet.index(inp1)
alphabet[loc]='-'
print space.join(word_blanks)
print space.join(alphabet)
我希望这一切都清楚,并且正确出来 . 感谢您的帮助!
1 回答
word_blanks
的起始长度是8,你永远不会重置它,所以你只会覆盖它中的某些位置,并且长度保持为8.尝试使用长度超过8个字符的单词word.
如果你猜了一个字母,你会得到IndexError
位置7,因为它会尝试改变word_blanks[8]
每次获得此代码的新单词时,您需要生成
word_blanks
的新版本 .