2017-01-30 9 views
0

Я работаю над этой проблемой: Challenge #6Как преобразовать целое число 8-разрядные двоичного

Я имел рабочую бинарную и Хэмминг функцию расстояния, но бинарная функция просто перестала работать. Он дает мне

"ValueError: Unknown format code 'b' for object of type 'str'" 

код ошибки по какой-либо причине. Это код, который я использовал для обоих ...

# returns only 1's and 0's of binary for int n 
def binary(n): 
    return '{0:08b}'.format(n) 

# returns hamming distance of s1 and s2 
def Hamm(s1, s2): 
    d = 0 # number of differences between s1 and s2 binary 
    for c1, c2 in zip(s1, s2): # compares s1[x] and s2[x] 
     if c1 != c2: 
      for a, b in zip(binary(c1), binary(c2)): 
       if a != b: 
        d += 1 # if 1 or 0 do not match up, d = d + 1 
    print(d) 
+0

'n' может быть строкой, а не Int - то есть. ''{0: 08b}'. Format (" 1 ")' и вы получите ошибку. – furas

ответ

1

n может быть строкой, а не Int - то есть.

'{0:08b}'.format("1") 

и вы получите ошибку.

Так что вам нужно int()

'{0:08b}'.format(int(n)) 
+0

Хорошо, спасибо. Это помогло. Я нашел проблему. Я проходил мимо 't' вместо ord ('t'). –

+0

моей новой проблемой является то, что когда я пытаюсь «Hamm (h1, h2)/size», он дает ошибку: 'TypeError: неподдерживаемый тип операндов для /: 'NoneType' и 'int'' Говорит ли это что Hamm (h1, h2) возвращает NoneType? Если да, то почему это не целое число? –

+1

, потому что вы не использовали 'return' для возврата значения -' print() 'не используется для возврата значения из функции, а только для отправки текста на экране. Каждая функция по умолчанию использует 'return None' – furas

 Смежные вопросы

  • Нет связанных вопросов^_^