Python 如何逐字符比较两个不同的字符串,以查看有多少个数字匹配?

Python 如何逐字符比较两个不同的字符串,以查看有多少个数字匹配?,python,python-3.x,string,Python,Python 3.x,String,我试着比较两个不同的字符串,看看有多少字母与其位置匹配: str1=‘afbhsnage’ str2='afbfsnaee' 如何比较两个字符串并找出有多少个字母匹配,但它们必须是相同的索引才能匹配 例如,每个字符串中的前3个字母匹配,但第4个字母不匹配,我希望保留有多少个字母匹配的分数 我知道我需要一个递增的循环来检查每个索引,但我被卡在了那个部分。这就是你要找的吗 matches = 0 for i in range(len(str1)): if str1[i] == str2[i]:

我试着比较两个不同的字符串,看看有多少字母与其位置匹配:

str1=‘afbhsnage’

str2='afbfsnaee'

如何比较两个字符串并找出有多少个字母匹配,但它们必须是相同的索引才能匹配

例如,每个字符串中的前3个字母匹配,但第4个字母不匹配,我希望保留有多少个字母匹配的分数


我知道我需要一个递增的循环来检查每个索引,但我被卡在了那个部分。

这就是你要找的吗

matches = 0
for i in range(len(str1)):
   if str1[i] == str2[i]:
      matches += 1
这取决于
True
等于1而
False
等于0这一事实
zip()。它还具有在最短长度上迭代的特性。如果你要用一个传统的循环来复制上面的内容,那么

tot = 0
# if both strings are equal in length `range(len(str1))` will suffice
for i in range(min(len(str1), len(str2))):
    tot += str1[i] == str2[i]

有时我也讨厌循环:)

但是递归总是可以帮助您克服这种坏情绪:

def compareStrings(a, b, count):
    if len(a) and len(b):
        if a[0] == b[0]:
            count += 1
        return compareStrings(a[1:], b[1:], count)
    return count
    
    
str1 = 'afbhsnage'

str2 = 'afbfsnaee'
    
print(compareStrings(str1, str2, 0))
试试这个。 当您尝试在两个变量之间循环时,枚举函数非常方便

count=0
for indx, item in enumerate(str1):
    if item == str2[indx]:
        count+=1
count=0
for indx, item in enumerate(str1):
    if item == str2[indx]:
        count+=1