如何在python中按照相同的顺序比较两个列表中的单词?(我有一个函数)

时间:2015-09-25 05:30:54

标签: python

最近,我确定了一个可以比较每个词表中两个词的功能。但是,我也发现了一些问题。

def printcorrectletters():
    x=0
    for letters in correctanswer:
        for letters2 in userinput:
            if letters == letters2:
                x = x+1
            break         
return x

在此功能中,如果correctanswer ='HUNTING',并且我输入'GHUNTIN',则会显示6个字母是正确的。但是,我希望它比较单词1的字母1.因此,它应该进行为0。例如,'H'将匹配userinput的第一个字母..依此类推。

我还认为可以使用'zip'解决它的另一个功能。但是,我们的TA要求我在没有'zip'之类的情况下完成它。

2 个答案:

答案 0 :(得分:0)

如果没有zip,您可以使用enumerate()循环遍历correctanswer的元素,并同时获取索引和元素。示例 -

def printcorrectletters():
    x=0
    for i, letter in enumerate(correctanswer):
        if i < len(userinput) and letter == userinput[i]:
            x = x+1      
    return x

或者,如果不允许enumerate(),则只需使用range()循环直到len(correctanswer)并从每个索引中获取元素。

答案 1 :(得分:0)

如果字符串的长度不同,则需要比较较短字符串的每个字母:

shortest_length = min(len(correctanswer), len(userinput))

min只会为您提供至少两个或更多值。你可以自己编写代码:

def min(a, b):
    return a if a < b else b

您可以使用[index]

为字符串中的字符编制索引
>>> 'Guanfong'[3]
n

所以你可以遍历所有的字母索引:

correct = 0
for index in range(shortest_length):
    if correctanswer[index] == userinput[index]:
        correct += 1

如果您确实使用了zipsum

correct = sum(1 for (correct_char, user_char) in zip(correctanswer, userinput)
              if correct_char == user_char)

Python提供了很好的工具来简化想法并与计算机和程序员(包括你自己,明天)进行通信。