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()修复它,它将不会返回任何内容。我没有看到我做错了什么。
答案 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