Python 比较两个字符串,计算正确位置的字母,然后计算word中包含但位置错误的字母

Python 比较两个字符串,计算正确位置的字母,然后计算word中包含但位置错误的字母,python,python-3.x,string,Python,Python 3.x,String,我正在做一个游戏,电脑从列表中随机选取一个单词。然后用户根据输入猜出单词。然后,应用程序应为正确位置的每个字母返回+1,并为单词中未正确位置的任何字母返回+1。它只应在正确的位置计算字母一次,并且在检查字母是否在单词中时不应重复。这是我目前的代码: def comparison(self) : word_letters = [] guess_letters = [] correct_position = 0 correct_letter = 0 for

我正在做一个游戏,电脑从列表中随机选取一个单词。然后用户根据输入猜出单词。然后,应用程序应为正确位置的每个字母返回+1,并为单词中未正确位置的任何字母返回+1。它只应在正确的位置计算字母一次,并且在检查字母是否在单词中时不应重复。这是我目前的代码:

def comparison(self) :
    word_letters = []
    guess_letters = []
    correct_position = 0
    correct_letter = 0

    for l in self.guess :
        guess_letters.append(l)

    for l in self.word :
        word_letters.append(l)

    i = 0
    for l in word_letters :
        if l == guess_letters[i] :
            guess_letters.pop(i)
            correct_position += 1
            i -= 1

        i += 1

    for l in guess_letters :
        if l in word_letters :
            correct_letter += 1

    print(
        f"{correct_position} letters in correct position, {correct_letter} correct letters in wrong position.")
这样做效果不错,但是如果随机选择的单词有重复的字母,就会遇到问题。我还想找到一种方法来解决这个问题,而不是像上面的代码那样杂乱无章


我通过谷歌搜索找到了一些解决方案,但它们似乎只解决了检查位置或检查单词中是否包含字母的问题,我很难将这两者结合起来,而不会出现重复的+1。

如果我正确理解了您的描述,此功能应该可以完成以下工作:

def比较(自):
正确位置=0
正确的字母=0
对于枚举中的i,l(self.guess):
如果l==self.word[i]:
正确位置+=1
elif l在self.word中:
正确的字母+=1
印刷品(
f“{correct_position}字母位置正确,{correct_letter}字母位置错误。”)