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