2015-11-12 33 views
-1

在單詞猜謎遊戲中,我將如何能夠注意到猜測和答案之間字符數量的差異?例如。被猜測的單詞是'答案',猜測是'回答',指出是3個字符的差異。我只是努力理解字符串到int轉換,如果這是我應該採取的路徑...比較Python中字符串的字符數

+1

只需使用'ABS(LEN(字) - LEN(猜))'? –

+1

你只是想比較長度,還是你想比較字符串的內容呢? 「貓」和「狗」的預期區別是什麼?那麼「蝙蝠」和「標籤」呢?關於「賭注」和「慫恿」呢? – Kevin

+0

比較內容,是啊...所以在你的例子中,貓和狗= 3的差異,蝙蝠和標籤= 2的差異,賭注和abet =差異1. –

回答

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

由於@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') 
print diff('answer', 'answering') 
print diff('bet', 'abet') 

輸出爲:

3 
2 
3 
1