正在评估字符串差异

  • 本文关键字:字符串 评估 python
  • 更新时间 :
  • 英文 :


我的类有一个问题,我需要比较字符串,即"truck"one_answers"trunk",并返回字符串不同的第一个位置。我已经设法解决了最初的部分,但当我遇到不同长度的字符串时,我遇到了麻烦,即"卡车"one_answers"卡车"。在删除并返回第1步之前,我尝试了一些不同的方法,所以我希望在这里得到一些建议。如有任何帮助,我们将不胜感激。我当前的代码如下。

IDENTICAL = -1
def singleline_diff(line1, line2):

short = min(len(line1),len(line2))

for i in range(0,short):

if line1[i] == line2[i]:
continue
else:
return i

else:
return IDENTICAL

word1 = 'truck'
word2 = 'trunk'
prob1 = singleline_diff(word1, word2)
print(prob1)

您可以使用zip+enumerate。

zip组合了两个可迭代项,如列表或字符串。如果你循环它,你会得到一对元组中单词1的一个字符和单词2中相同位置的字符。

enumerate返回当前循环的索引。由于return停止所有活动,一旦元组w(来自zip()(在位置0和1 上有不同的字符,您就可以使用它来返回索引(来自枚举(

def singleline_diff(word1, word2):

word1 = word1.ljust(len(word2))
word2 = word2.ljust(len(word1))

for i,w in enumerate(zip(word1, word2)):
if w[0] != w[1]:
return i

return "Identical"

word1 = 'truck'
word2 = 'trucks' 
print(singleline_diff(word1, word2))

如果line1==line2的计算结果为true,则可以简单地返回IDENTIAL。如果长度不均匀且没有发现差异,则返回short即可。

def singleline_diff(line1, line2):
if line1 == line2:
return IDENTICAL
short = min(len(line1),len(line2))
for i in range(0,short):
if line1[i] == line2[i]:
continue
else:
return i
return short

相关内容

最新更新