问题来了:
有两个用户输入的字符串。
分别对于两个字符串相同位置的每个字符:
1 和 1 表示 0, 2 和 2 表示 0, 3 和 x 表示 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