我试图返回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内置函数。
答案 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
尽管该方法使用min
,len
和range
。如果你拒绝使用某种语言的内置函数,那么你真的将双手绑在背后。
答案 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)