2 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
以下是使用兩種不同方式計(jì)算漢明距離的程序。
import hashlib
def hamming_distance(chaine1, chaine2):
return sum(c1 != c2 for c1, c2 in zip(chaine1, chaine2))
def hamming_distance2(chaine1, chaine2):
return len(list(filter(lambda x : ord(x[0])^ord(x[1]), zip(chaine1, chaine2))))
if __name__=="__main__":
chaine1 = hashlib.md5("chaine1".encode()).hexdigest()
chaine2 = hashlib.md5("chaine2".encode()).hexdigest()
#chaine1 = "6fb17381822a6ca9b02153d031d5d3da"
#chaine2 = "a242eace2c57f7a16e8e872ed2f2287d"
assert len(chaine1) == len(chaine2)
print(hamming_distance(chaine1, chaine2))
print(hamming_distance2(chaine1, chaine2))
你得到的原因Invalid syntax: ...可能是你沒(méi)有任何縮進(jìn),這在 Python 中是必需的。

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
首先應(yīng)該定義兩個(gè)字符串之間的漢明距離。
兩根相等長(zhǎng)度的弦之間的漢明距離是這些弦變化的位置數(shù)。用更專(zhuān)業(yè)的術(shù)語(yǔ)來(lái)說(shuō),它是衡量將一根弦變成另一根所需的最少更改次數(shù)的指標(biāo)。
讓我們來(lái)解決它。
def hamming(s1,s2):
result=0
if len(s1)!=len(s2):
print("String are not equal")
else:
for x,(i,j) in enumerate(zip(s1,s2)):
if i!=j:
print(f'char not math{i,j}in {x}')
result+=1
return result
s1="rover"
s2="river"
print(hamming(s1,s2))
結(jié)果:char not match ('o', 'i') in 1
添加回答
舉報(bào)