2016-01-23 2 views
0

Я пытаюсь использовать Int (х, базовый) функциональность класса с использованием Python 2.7Python 2.7 Int (улица, основание) путаница

, когда я делаю: num = int('100', 2) получаю ответ 4

однако , когда я делаю num = int('72', 2) Я получаю следующую трассировку.

Traceback (most recent call last): 
    File "foobar1.py", line 26, in <module> 
    num = int('72', 4) 
ValueError: invalid literal for int() with base 4: '72' 

Я не уверен, что мне не хватает.

+0

Что вы ожидали? – user2357112

ответ

1

Базовый номер с указанием числовой основы значения. Например, установка базы на 16 означает, что вы работаете с шестнадцатеричным числом, а при настройке на 8 означает, что вы работаете с цифрами в восьмеричном.

В восьмеричной (базовая 8) цифры, доступные вам, равны 0--7. Попытка конвертировать число «89» с помощью функции num = int ('89 ', 8) даст вам ошибку, потому что цифры 8 и 9 не используются в базовых 8 числах. Аналогично, в базе 2 доступны только следующие цифры: 0 и 1 - наивысшая допустимая цифра будет базовым номером - 1.

Надеюсь, это прояснит ситуацию.

+0

спасибо, это именно то, что мне нужно. Наверное, я не совсем понял, что делает функциональность. – AlliDeacon

1

72 не является двоичным числом (как минимум, это основание 8), но когда вы указываете базу 2, вы утверждаете, что это так. Таким образом, ваша функция не работает.

num = int('1001000', 2) 

или:

num = int('1020', 4) 

будет работать, как и ожидалось, к примеру, и даст вам целое число, которое будет эквивалентно десятичному 72.

1

Второй параметр означает основание. База 2 означает, что число может использовать только 2 числа (которые равны 0 и 1). Когда вы пытаетесь преобразовать 72 из двоичного кода (base 2), он терпит неудачу, потому что числа 7 и 2 не существуют в двоичном формате.

Если вы пытаетесь преобразовать ваш номер в двоичного, используйте bin()

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