Python 2个相同位置的相似字符
我试图返回两个字符串具有相同字符的位置数 试用代码:Python 2个相同位置的相似字符,python,string,function,Python,String,Function,我试图返回两个字符串具有相同字符的位置数 试用代码: def matches(stringOne, stringTwo): if stringOne or stringTwo == " ": return None else: n=0 count=0 if stringOne[n] == stringTwo[n]: count=count+1 else:
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内置函数。您可以使用带有
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
尽管该方法也使用
min
、len
和范围
。如果你拒绝使用一种语言的内置函数,你真的是束手无策。我会按照赛博的建议使用生成器,否则就把函数改大:
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
a='abcd'
b='xbddea'
def匹配(astr、bstr):
总数=0
i=0
当我离你很近的时候。考虑Srimon和Strime2具有不同长度的情况。比较之后,您必须检查是否已到达两个字符串的末尾。如果是,返回。使用范围是个坏主意。使用enumerate,就像我在回答中检查索引和值是否相同一样。@MalikBrahimi如果要使用enumerate
,也可以使用zip
,但OP出于某种原因不想使用它。使用range
并不是一个“坏主意”,因为我确保使用两个长度中较短的一个。是的,我试图给OP更多的函数,而不是生成器的单个语句。这里只使用了两个内置项,print()和len()。我记得len()只是一个int查找,而不是每次使用的字符数。我
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)