-1
在單詞猜謎遊戲中,我將如何能夠注意到猜測和答案之間字符數量的差異?例如。被猜測的單詞是'答案',猜測是'回答',指出是3個字符的差異。我只是努力理解字符串到int轉換,如果這是我應該採取的路徑...比較Python中字符串的字符數
在單詞猜謎遊戲中,我將如何能夠注意到猜測和答案之間字符數量的差異?例如。被猜測的單詞是'答案',猜測是'回答',指出是3個字符的差異。我只是努力理解字符串到int轉換,如果這是我應該採取的路徑...比較Python中字符串的字符數
那麼簡單地使用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
>>>
由於@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
只需使用'ABS(LEN(字) - LEN(猜))'? –
你只是想比較長度,還是你想比較字符串的內容呢? 「貓」和「狗」的預期區別是什麼?那麼「蝙蝠」和「標籤」呢?關於「賭注」和「慫恿」呢? – Kevin
比較內容,是啊...所以在你的例子中,貓和狗= 3的差異,蝙蝠和標籤= 2的差異,賭注和abet =差異1. –