找到两个字符串之间匹配的字符数

时间:2021-04-07 07:12:18

标签: string

问题来了:

有两个用户输入的字符串。

分别对于两个字符串相同位置的每个字符:

1 和 1 表示 0, 2 和 2 表示 0, 3 和 x 表示 2, 没什么意思2

2 个答案:

答案 0 :(得分:0)

主要问题是你可能想在逻辑值之间使用==比较,但是你没有把这两个表达式放到()中。 尝试例如

    if (ord(x) in range(48,57)) == (ord(y) in range(48,57)):
        same_type += 1

另一方面,您将条件用作独立的 if 语句,因此多个这样的条件在 spec_dist2 中为真。我不认为这是你的意图。

答案 1 :(得分:0)

这样的事情应该在这种情况下工作:

def spec_dist1(string1, string2):
  same_type = 0
  for x, y in zip(string1, string2):
      if x == y:
          same_type += 0
      elif ord(x) in range(48,57) and ord(y) in range(48,57):
          same_type += 1
      elif any(ord(x) in range(s,e) for s,e in [(97,122), (65,90)]) and any(ord(y) in range(s,e) for s,e in [(97,122), (65,90)]):
          same_type += 1
      elif any(ord(x) in range(s,e) for s,e in [(33,47), (58,64), (91,96), (123,126)]) and any(ord(y) in range(s,e) for s,e in [(33,47), (58,64), (91,96), (123,126)]):
          same_type += 1
      else:
          same_type += 2
  same_type += abs(len(string1) - len(string2)) * 3
  return same_type