首页 > 解决方案 > 在python中猜测单词中的字母

问题描述

我是 python 的初学者,我正在尝试编写一个程序来猜测一个单词中的字母(这里我使用了 'coconut' )。猜测没有限制。如果每次猜测都是正确的,我想将字母的位置显示为另一个('guess_map')。

所以我guess_map用相同的单词长度定义了列表。然后使用 for 循环,我用单词检查猜测的输入并替换列表“guess_map”中的相应元素。

但后来我发现它不适用于重复的字母。例如'c'。该代码仅考虑单词中的第一个“c”。我不知道我在哪里犯了错误。任何人都可以帮忙吗?

word = 'coconut'
reference = list(word)
number_letters = len(reference)
guess_map = ['-']*number_letters

guess = input('Guess the letter')
for let in reference:
    if let == guess:
        ref_ind = reference.index(let)
        guess_map[ref_ind] = guess

print(guess_map)

标签: python

解决方案


错误在ref_ind = reference.index(let). 这只会找到第一次出现,即使循环找到了所有这些。

这个版本的程序enumerate每次都用来给你正确的索引。

word = 'coconut'
reference = list(word)
final = reference[:]
number_letters = len(reference)
guess_map = ['-']*number_letters


while guess_map != final:
    guess = input('Guess the letter')
    for ref_ind, let in enumerate(reference):
        if let == guess:
            guess_map[ref_ind] = guess

    print(guess_map)

print("Done")

我冒昧地添加了一个循环,让你一直猜测,直到你做对了。


推荐阅读