Python 类型错误:';int';对象不能按距离调用

Python 类型错误:';int';对象不能按距离调用,python,python-3.x,Python,Python 3.x,我复习了其他答案,但它们没有回答我的汉明距离问题 我给它一个无限的距离 导入系统 模式和字符串(模式、dna)之间的def距离: k=模式 距离=0 对于范围内的i(len(dna)-len(模式)+1): 汉明距离=sys.maxsize 对于范围内的j(len(dna)-len(图案)+1): 模式2=dna[j:j+len(模式)] 如果汉明距离>汉明距离(图案,图案2): 汉明距离=汉明距离(图案,图案2) 距离=距离+汉明距离 返回距离 def汉明距离(图案,图案2): 差异=0 对于

我复习了其他答案,但它们没有回答我的汉明距离问题

我给它一个无限的距离

导入系统 模式和字符串(模式、dna)之间的def距离: k=模式 距离=0 对于范围内的i(len(dna)-len(模式)+1): 汉明距离=sys.maxsize 对于范围内的j(len(dna)-len(图案)+1): 模式2=dna[j:j+len(模式)] 如果汉明距离>汉明距离(图案,图案2): 汉明距离=汉明距离(图案,图案2) 距离=距离+汉明距离 返回距离 def汉明距离(图案,图案2): 差异=0 对于拉链中的ch1、ch2(图案、图案2): 如果ch1!=ch2: 差值+=1 回差 我应该得到没有错误的距离,但我得到的是:

TypeError:“int”对象不可调用

if HammingDistance > HammingDistance(pattern, pattern2)

误差与距离计算无关。问题是您有一个同名的变量和方法。你不应该那样做

您已将
汉明距离
定义为一种方法:

def汉明距离(模式,模式2):
...
您还将
hammingdestance
定义为
int

HammingDistance=sys.maxsize
当你这么做的时候:

HammingDistance(pattern, pattern2)
解释器将调用最近的定义,即定义为
int
而非
hammingdestance
方法的
hammingdestance
。这就是为什么会出现“'int'对象不可调用”错误

只需将局部变量重命名为其他变量,以将其与方法区分开来

hamming_距离=sys.maxsize
对于范围内的j(len(dna)-len(图案)+1):
模式2=dna[j:j+len(模式)]
如果海明距离>海明距离(图案,图案2):
汉明距离=汉明距离(图案,图案2)
距离=距离+汉明距离

HammingDistance是一个变量。在if语句中,当您执行HammingDistance(pattern,pattern2)时,您将其作为函数“()”调用