在单词猜谜游戏中,我如何能够记录猜测和答案之间的字符数量的差异?例如。要猜的是'回答',猜是'回答',注意到3个字符的差异。我只是在努力理解字符串到int的转换,如果那是我应该采取的路径......
答案 0 :(得分:2)
那么简单地使用这样的difflib.ndiff()
方法呢?我认为这个功能可以正常工作:
import difflib
def check_diff(a, b):
diff = [i[0] for i in difflib.ndiff(a, b) if i[0] != ' ']
nums = abs(diff.count('+') - diff.count('-'))
return (nums if nums != 0 else diff.count('+'))
演示:
>>> import difflib
>>> def check_diff(a, b):
... diff = [i[0] for i in difflib.ndiff(a, b) if i[0] != ' ']
... nums = abs(diff.count('+') - diff.count('-'))
... return (nums if nums != 0 else diff.count('+'))
...
>>>
>>> check_diff('cat', 'dog')
3
>>> check_diff('bat', 'tab')
2
>>> check_diff('bet', 'abet')
1
>>> check_diff('ABCXYZ', 'ABCOXYZ')
1
>>> check_diff('ABCXYZ', 'ABXYZ')
1
>>> check_diff('ABCXYZ', 'ABXZ')
2
>>>
答案 1 :(得分:1)
正如@KevinGuan在评论中所说,你可以使用diiflib。
这是一个示例函数:


 def diff(a,b): 
 sm = difflib.SequenceMatcher(None,a,b)
 match_size = sm.find_longest_match(0,len(a),0,len(b))。size
 return max(len(a),len(b)) - match_size

 print diff('cat','dog')
 print diff('bat','tab')&# xA; print diff('answer','answersing')
 print diff('bet','abet')



 输出为:


 3
 2
 3
 1