如何让我的猜字游戏能够找到多个双字母?

2 投票
1 回答
874 浏览
提问于 2025-04-16 18:01

我在我的猜单词游戏程序中遇到了一个问题,就是找不到超过两个重复字母的单词。

举个例子,如果我的猜测单词列表中有 aabcaaabc,那么我猜 abc 时,它不会告诉我我猜对了。但是如果我的猜测单词列表中有 abc,而我猜 abc,那么我就会被告知我猜对了。

这是我的代码:

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."

你看我的单词列表中都有超过两个重复字母的单词,结果即使我猜了所有字母,它也从来没有告诉我我猜对了。我知道一旦单词的字母长度超过两个(也就是有重复字母),就不会被判定为猜对了,但我该怎么解决这个问题呢?

1 个回答

2

结束条件不对,因为 letters_correct 每次只增加一次,即使某个字母出现了多次。

我建议把 [victory] 的结束条件改成“当 guesses 中没有 _ 时”,这意味着所有的 _ 都被替换掉了……(另外,在生成 guesses 时,也要考虑输入的短语,比如“hello world”等,如果这很重要的话)。

祝你作业顺利。


如果能让程序更“模块化”,会有额外的加分:一个简单的改动是让主循环(检查胜利条件的部分)调用一个方法,这个方法负责提示输入字母,然后更新显示内容。

撰写回答