Как правило, у нас десять пальцев на руках и ногах (у одного из моих котов их немного больше, но он редко использует их для счета), поэтому мы считаем: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. После этого у нас заканчиваются цифры и мы переносим единицу на место десятки и ноль — на место единицы: 10 означает
Система счисления указывает, сколько цифр вы можете использовать до того, как перенести единицу. В двоичной (бинарной) системе счисления единственными цифрами являются 0 и 1. Двоичные 0 и 1 точно такие же, как и десятичные. Однако, если в этой системе сложить 1 и 1, вы получите 10 (одна десятичная двойка плюс ноль десятичных единиц).
В Python вы можете выразить числа в трех системах счисления помимо десятичной:
• 0b или 0B для
• 0o или 0O для
• 0x или 0X для
Интерпретатор выведет эти числа как десятичные. Попробуем воспользоваться каждой из систем счисления. Первой выберем старое доброе десятичное число 10, которое означает
>>> 10
10
Теперь возьмем двоичную (основание 2), что означает
>>> 0b10
2
Восьмеричная (основание 8) означает
>>> 0°10
8
Шестнадцатеричная (основание 16) означает
>>> 0x10
16
Если вам интересно, какие «цифры» использует шестнадцатеричная система счисления, взгляните на них: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e и f. 0ха равно десятичной 10, а 0xf — десятичному 15. Добавьте 1 к 0xf, и вы получите 0х10 (десятичное 16).
Зачем использовать другие системы счисления, отличные от десятичной? Это полезно для
Преобразования типов
Для того чтобы изменить другие типы данных на целочисленный тип, следует использовать функцию int(). Она сохраняет целую часть числа и отбрасывает любой остаток.
Простейший тип данных в Python —
>>> int(True)
1
>>> int(False)
0
Преобразование числа с плавающей точкой в целое число просто отсекает все, что находится после десятичной запятой[2]:
>>> int(98.6)
98
>>> int(1.0e4)
10000
Наконец, рассмотрим пример преобразования текстовой строки (со строками вы познакомитесь через несколько страниц), которая содержит только цифры и, возможно, знаки + и —:
>>> int('99')
99
>>> int('-23')
-23
>>> int('+12')
12
Преобразование целого числа в целое число ничего не меняет и совсем не вредит:
>>> int(12345)
12345
Если вы попробуете преобразовать что-то непохожее на число, сгенерируется
>>> int('99 bottles of beer on the wall')
Traceback (most recent call last):
··File "
ValueError: invalid literal for int() with base 10: '99 bottles of beer on the wall'
>>> int('')
Traceback (most recent call last):
··File "
ValueError: invalid literal for int() with base 10: ''
Текстовая строка в предыдущем примере начинается с корректных символов-цифр (99), но продолжается теми символами, которые функция int() обработать не может.
Мы рассмотрим исключения в главе 4. Пока нужно только помнить, что с помощью исключений Python извещает вас о том, что произошла ошибка, вместо того чтобы прервать выполнение программы, как поступают некоторые другие языки. Вместо того чтобы показывать вам лишь правильные примеры, я продемонстрирую множество вариантов исключений, чтобы вы знали, как поступает Python, когда что-то идет не так.