如何让我的刽子手游戏可以找到2个以上的双字母?

时间:2011-05-20 05:06:16

标签: python

我的刽子手程序中发现了超过2个双字母字的问题。

EX:如果我的猜测词汇表中有aabcaaabc,那么我猜a b c不会告诉我我得到的对。但如果我在猜单词列表中abc,我猜a b c,那么我就是对了。

这是我的代码:

while keep_playing:
    wordlist=["butterfly","tree","circumstances","jinrikisha"]
    word=choice(wordlist)
    word_len=len(word)
    guesses=word_len * ['_']
    max_incorrect=7
    alphabet="abcdefghijklmnopqrstuvxyz"
    letters_tried=""
    number_guesses=0
    letters_correct=0
    incorrect_guesses=0
    print_game_rules(max_incorrect,word_len)
    while (incorrect_guesses != max_incorrect) and (letters_correct != word_len):
        clues()
        letter=get_letter()
        if len(letter)==1 and letter.isalpha():
            if letters_tried.find(letter) != -1:
                print "You already picked", letter
            else:
                letters_tried = letters_tried + letter
                first_index=word.find(letter)
                if  first_index == -1:
                    incorrect_guesses= incorrect_guesses +1
                    print "The",letter,"is not the mystery word."
                else:
                    print"The",letter,"is in the mystery word."
                    letters_correct=letters_correct+1
                    for i in range(word_len):
                        if letter == word[i]:
                            guesses[i] = letter
        else:
            print "Please guess a single letter in the alphabet."

看看我的单词列表如何有超过2个双字母,并且从不告诉我我猜对了,即使我猜到了所有的字母。 我知道一旦len字母超过2(双字母)这个字就不会正确,但我怎么能解决呢?

1 个答案:

答案 0 :(得分:2)

结束条件不正确,因为letters_correct 每次仅增加一个(即使该字母多次出现)。

我会将[胜利]结束条件更改为“当guesses中没有_时”,这意味着所有的_已被替换,这意味着......(同时确保输入短语)生成guesses时,“hello world”[和类似]会被考虑在内,如果重要的话。)

快乐的家庭工作。


使程序更“模块化”的奖励点:一个微不足道的变化是使主循环(带胜利条件测试)调用一个方法,提示输入一个字母,然后更新显示。