2喜欢同一位置的人物

时间:2015-04-10 00:44:21

标签: python string function

我试图返回2个字符串具有相同字符的位置数。

尝试过的代码:

    def matches(stringOne, stringTwo):
    if stringOne or stringTwo == " ": 
        return None
    else:
       n=0
       count=0
       if stringOne[n] == stringTwo[n]:
           count=count+1
       else:
           pass
       n=n+1
       return count

示例:

   matches = matches("abcd", "xbade")
   print matches
   2

谢谢! :)

不,它不是作业。

请不要拉链功能。我并没有尝试使用Python内置函数。

3 个答案:

答案 0 :(得分:1)

您可以使用带zip的生成器表达式迭代字符串以进行逐字母比较

def matches(stringOne, stringTwo):
    return sum(1 for i,j in zip(stringOne, stringTwo) if i == j)

>>> matches("abcd", "xbade")
2
>>> matches('dictionary', 'dibpionabc')
6

如果您不想使用Python的zip功能

def matches(stringOne, stringTwo):
    shorter = min(len(stringOne), len(stringTwo))
    same = 0
    for i in range(shorter):
        same += stringOne[i] == stringTwo[i]
    return same

尽管该方法使用minlenrange。如果你拒绝使用某种语言的内置函数,那么你真的将双手绑在背后。

答案 1 :(得分:0)

我会使用生成器作为Cyber​​建议,否则更改你的功能:

def matches(a, b):
    total = 0

    for i, j in enumerate(a):
        for x, y in enumerate(b):
            if i == x and j == y:
                total += 1

    return total

答案 2 :(得分:0)

a = 'abcd'
b = 'xbddea'
def matches(astr, bstr):
    total = 0
    i = 0
    while i<len(astr) and i<len(bstr):
        if astr[i] == bstr[i]:
            total += 1
        i += 1
    return total
print(matches(a,b)