首页 > 解决方案 > 如何逐个字符比较 2 个不同的字符串,看看有多少数字匹配?

问题描述

我正在尝试比较 2 个不同的字符串,看看有多少字母在它的位置匹配:

str1 = 'afbhsnage'

str2 = 'afbfsnaee'

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

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

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

标签: pythonpython-3.xstring

解决方案


sum(a == b for a, b in zip(str1, str2))

这取决于True等于 1 和False0的事实。zip()同时为所有可迭代对象获取每个索引处的元素,即str1[i]str2[i]。它还具有迭代最短长度的功能。如果您要使用常规循环复制上述内容,那就是

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]

推荐阅读