我复习了其他答案,但它们没有回答我的汉明距离问题
我给它一个无限的距离
import sys
def DistanceBetweenPatternAndStrings(pattern, dna):
k = pattern
distance = 0
for i in range(len(dna) - len(pattern)+1):
HammingDistance = sys.maxsize
for j in range(len(dna) - len(pattern)+1):
pattern2 = dna[j:j+len(pattern)]
if HammingDistance > HammingDistance(pattern, pattern2):
HammingDistance = HammingDistance(pattern, pattern2)
distance = distance + HammingDistance
return distance
def HammingDistance(pattern, pattern2):
diff = 0
for ch1, ch2 in zip(pattern, pattern2):
if ch1 != ch2:
diff +=1
return diff
我应该得到没有错误的距离,但我得到的是:
TypeError: 'int' object is not callable
在
if HammingDistance > HammingDistance(pattern, pattern2)
误差与距离计算无关。问题是您有一个同名的变量和方法。你不应该那样做
您已将
HammingDistance
定义为方法:您还将
HammingDistance
定义为int
:当你这么做的时候:
解释器将调用最近的定义,即
HammingDistance
定义为int
,而不是您的HammingDistance
方法。这就是为什么出现“'int'对象不可调用”错误的原因只需将局部变量重命名为其他变量,以将其与方法区分开来
相关问题 更多 >
编程相关推荐