我什么都有,除了哈明距离。我一直收到错误“int()无法转换具有显式基的非字符串”
这是我的代码:
def int2bin(n):
if n:
bits = []
while n:
n,remainder = divmod(n, 2)
bits.insert(0, remainder)
return bits
else: return [0]
def bin2gray(bits):
return bits[:1] + [i ^ ishift for i, ishift in zip(bits[:-1], bits[1:])]
def hamming(a,b):
assert len(a) == len(b)
count,z = 0,int(a,2)^int(b,2)
while z:
count += 1
z &= z-1
return count
def main():
a = int(input("Positive integer 1: "))
b = int(input("Positive integer 2: "))
print('int:%2i binary:%12r BRGC:%12r' %
( a,
int2bin(a),
bin2gray(int2bin(a))
))
print('int:%2i binary:%12r BRGC:%12r' %
( b,
int2bin(b),
bin2gray(int2bin(b))
))
print('hamming|%2 %12r &12r' %
(hamming(int2bin(a),int2bin(b)),
hamming(bin2gray(int2bin(a)),bin2gray(int2bin(b)))
))
main()
输出应该如下所示
^{pr2}$请帮忙!在
试试这个实现(
a
和b
应该是整数):这里我异或},得到二进制,其中1表示}之间的差。而不是我只数一个。在
a
和{a
和{在函数
hamming
中看起来您将一个整数列表作为第一个参数(
a
和b
)传递给函数int()
。第二个论点是你的明确基础。你不能这么做。在尝试将
a
替换为''.join(str(el) for el in a)
,并对b
使用相同的方法。在或者,可以将函数
int2bin
替换为format(n, 'b')
,以直接获得二进制字符串。在此代码计算两个可能相当长的字符串的汉明距离。在
相关问题 更多 >
编程相关推荐