2014-04-21 4 views
7

Я читал официальный документ https://docs.python.org/2/library/functions.html#int, но все еще смущен.Что делает базовое значение в функции int?

Я пробовал какую-то команду на своем терминале, я нахожу некоторые правила, но до сих пор не совсем понимаю. Надеюсь, что кто-то, у кого больше знаний об этом, может объяснить это дальше.

Ниже приведены мои примеры и выводы:

int('0', base=1) 
ValueError: int() base must be >= 2 and <=36 

int('3', base=2) 
ValueError: invalid literal for int() with base 2: 

int('3', base=4) 
3 

int('33', base=4) 
15 

int('333', base=4) 
63 

int('353', base=4) 
ValueError: invalid literal for int() with base 4: 

я нахожу два правила здесь:

  1. одиночные строковые номера должны быть меньше, чем базовое число.
  2. int() возвращает число, равное (n)*(base^(n-1)) + (n-1)*(base^(n-2)) + ... + 1*(base^0)

Есть ли какие-либо другие скрытые правила, чем это, и какие проблемы база предназначена для решения?

+1

'Какая проблема является база предназначена для решения?' = Весьма полезной в теории чисел, которая имеет применение в криптографии (RSA), кодирование (обнаружение и исправление ошибок) и т.д. – stackErr

ответ

3

это именно то, что делает его говорит - преобразует строку в целое число в заданную числовую базу. Согласно документации, int() может преобразовывать строки в любую базу от 2 до 36. На нижнем конце база 2 является самой низкой полезной системой; base 1 будет иметь только «0» в качестве символа, что для подсчета бесполезно. На верхнем конце 36 выбирается произвольно, потому что мы используем символы из «abcdefghijklmnopqrstuvwxyz» (10 цифр + 26 символов) - вы можете продолжить с большим количеством символов, но не совсем понятно, что использовать после z.

"Normal" Математика базовый 10 (использует символы ""):

int("123", 10) # == 1*(10**2) + 2*(10**1) + 3*(10**0) == 123 

Binary является основанием 2 (использует символы "01"):

int("101", 2) # == 1*(2**2) + 0*(2**1) + 1*(2**0) == 5 

"3" не имеет смысла в базе 2; он использует только символы «0» и «1», «3» - недопустимый символ (это похоже на попытку заказать встречу на 34 января).

int("333", 4) # == 3*(4**2) + 3*(4**1) + 3*(4**0) 
       # == 3*16 + 3*4 + 3*1 
       # == 48 + 12 + 3 
       # == 63 
5

Значение base указывает python интерпретировать данную строку как значение другой базы.

Например, 1011 в основании 2 равно 11. Таким образом, int('1011', 2) возвращает 11.
С другой стороны, 1011 в основании 3 равно 31. Таким образом, int('1011', 3) возвращает 31.

Десятичные разряды находятся в базе 10, поэтому значение по умолчанию base равно 10.

Замечательный побочный эффект выбора числовой базы состоит в том, что в этой системе не существует цифры, которая выше (или равна) самой базы. Вот почему у нас нет десятичной цифры в десятичной системе, а в шестнадцатеричной системе (база 16) используется цифра A для десяти. Вот почему вы получаете ошибки для спрашивать номер с цифрой 5 должны интерпретироваться в базе 4.

3

int() функция может преобразовать целое число в базе (или radix), кроме 10 передается в виде строки, где второй параметр является основой числа в строке, и результат будет целым числом в базе 10. Например, все следующие строковые значения приведет к целому числу 42:

int('42')  # by default, it's base 10 
=> 42 
int('42', 10) # same as above 
=> 42 
int('101010', 2) # base 2 (binary) 
=> 42 
int('2A', 16) # base 16 (hexadecimal) 
=> 42 
2

Основание - это количество различных основных элементов или цифр в числовой системе.

База 2 имеет 0 и 1 и может быть представлена ​​в электронике как включенная и выключенная.

Основание 10 имеет знакомые 10 цифр 0..9

Любое целое число может быть выражен в любой из баз, но строка символов будет отличаться. Например, в базе 2 1111 = 15 в базе 10

Возможность выбора базового преобразования в строки или из строк позволяет программному обеспечению принимать входные данные в разных базах и при необходимости переводить базы.

Смотрите также http://en.wikipedia.org/wiki/Radix

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