匹配字符串中的字符和返回值

时间:2016-02-25 09:45:13

标签: python string

if s1 == s2:
    return 0


elif len(s1) == len(s2):
    mismatch = 0
    for i,j in zip(s1,s2):
        if i != j:
            mismatch +=1

    if mismatch == 1:
        return 1

elif len(s1) != len(s2):
    mismatch = 0
    for i,j in zip(s1,s2):
        if i != j:
            mismatch +=1

    if mismatch > 1:
        return 2

我被要求编写一个代码,比较两个将作为我的函数的参数接收的字符串。在迭代它们时,如果它们都相同则返回0,如果一个字符不匹配则返回1,如果两个字符的长度不相同或者超过1个字符不匹配则返回2。 / p>

当我尝试'sin'和'sink'作为输入字符串时,我的代码不返回任何内容?我试图以不同的方式改变我的代码,但它没有帮助。如果一个字符(如字符串中的空格和另一个字符)存在差异,它也不会返回任何内容。

这似乎是一段足够简单的代码,但我似乎无法正确编写代码。如果我尝试使用.lower()修复空间和另一个字符的问题,它不会在字符串的末尾包含'k'。如果我用.upper()修复它,它将不会返回任何内容。我没有看到我做错了什么。

3 个答案:

答案 0 :(得分:0)

我认为你的代码没有返回任何内容是正常的,因为在某些情况下没有任何返回值:如果长度相等但不匹配!= 1并且当长度不同但不匹配时

因为在你的例子中“sin”和“sink”你只计算“sin”部分的不匹配,所以最后不匹配等于0。

答案 1 :(得分:0)

此功能可能正是您要找的

def match_string(s1,s2):
s1=s1.lower()
s2=s2.lower()
if s1 == s2:
    return 0
elif abs(len(s1)-len(s2))<2:
    mismatch=0
    for i in range(0,min(len(s1),len(s2))):
        if s1[i]!=s2[i]:
            mismatch+=1
    if mismatch<2:
        return 1
    else:
        return 2
else:
    return 2

答案 2 :(得分:0)

最终让它发挥作用:

def find_mismatch(s1,s2):     α=清单(s1.lower())     B =列表(s2.lower())     C = LEN(a)中     d = LEN(b)中

match = 0

for char in b:
    if char in a:
        match += 1
        a.remove(char)

g=list(s1.lower())
h=list(s2.lower())
i=len(g)
j=len(h)           

match1 = 0
for char in g:
    if char in h:
        match1 += 1
        h.remove(char)

if match == c and match1 == j:
    return 0
elif (match == 0 or match1 == 0) and a != h:
    return 2
elif a != h and len(a) == len(h):
    return 1
elif a != h and len(a) != len(h):
    return 2