首页 文章

如何将下划线的数量与Python中输入列表中的字母数相匹配

提问于
浏览
2

我对编程很新,并且已经为自己设定了在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 回答

  • 2

    word_blanks 的起始长度是8,你永远不会重置它,所以你只会覆盖它中的某些位置,并且长度保持为8.尝试使用长度超过8个字符的单词 word. 如果你猜了一个字母,你会得到 IndexError 位置7,因为它会尝试改变 word_blanks[8]

    每次获得此代码的新单词时,您需要生成 word_blanks 的新版本 .

相关问题