Python. Числа и операции с ними. Встроенные функции int(), bin(), oct(), hex(), float(), complex(), (6)
Числа и операции с ними
В Python числа могут быть целыми (int), вещественными (float) и комплексными (complex).
Целое число в десятичной форме ничем не отличается от обыкновенного числа, например — 1
Целое число в двоичной форме имеет вид — 0b111. Перед числом стоит 0b, дальше следует само число в двоичной форме 111.
Целое число в восьмеричной форме имеет вид – 0o8. Перед числом стоит 0o (ноль и буква о), дальше следует само число в восьмеричной форме 8.
Целое число в шестнадцатеричной форме имеет вид – 0xAF. Перед числом стоит 0x, дальше следует само число в двоичной форме AF.
Существуют встроенные функции для преобразования целого числа из одной системы исчисления в другую. В двоичное число bin(), в восьмеричное число(oct()) и шестнадцатеричное число(hex().
Для преобразования в десятичное число существует встроенная функция int()
Функция int() имеет два аргумента. Первый аргумент — значение, которое нужно преобразовать в целое число, второй аргумент (необязательный) система исчисления в которой задан первый аргумент (может быть от 2 до 36), по умолчанию второй аргумент равен 10. При использовании второго аргумента отличного от 10 — первый аргумент должен быть представлен в виде строки.
Преобразуем строку в целое число.
Преобразуем вещественное число в целое число (дробная часть отбрасывается без округления):
Преобразуем число из тридцатеричной системе исчислений в целое десятичное число.
При использовании второго аргумента если первый аргумент функции int() представлен не строкой, получается ошибка.
Traceback (most recent call last):
Python Shell, prompt 12, line 1
builtins.TypeError: int() can’t convert non-string with explicit base
Для преобразования целого числа в двоичную форму используется функция bin(). Функция bin() принимает один аргумент – целое десятичное число. Возвращает строку (str).
Для преобразования целого числа в восьмеричную форму используется функция oct(). Функция oct() принимает один аргумент – целое число. Возвращает строку.
Для преобразования целого числа в шестнадцатеричную форму используется функция hex(). Функция hex() принимает один аргумент – целое число. Возвращает строку.
Вещественные числа (float). Встроенная функция float()
Как я понял вещественные, числа с дробной частью и числа с плавающей запятой это разные названия числа вида: 7.0 или 77.12 и т.д и т.п.
Получить вещественное число можно с помощью функции float(). Аргумент у функции один и он может быть числом или строкой. Возвращает число типа float.
Передаем функции float() аргумент в виде целого числа.
Передаем функции float() аргумент в виде строки (str).
Комплексные числа (complex). Встроенная функция compex()
Числа содержащие мнимую часть и имеют вид:
Для преобразования в комплексное число есть функция complex(). Она имеет два аргумента первый действительная часть, второй аргумент мнимая часть. Оба аргумента должны быть целыми числами(int) или вещественными числами (float). Возвращает комплексное число (complex).
Математику я учил давно и до сих пор так и не встретил случая, где бы я мог применить их. Так, что на данный момент можно констатировать, что в Python есть комплексные числа и это пока все.
>>>1 + 2 сложение целого числа с целым получаем
>>>1.0 + 2 сложение вещественного числа с целым получаем
3.0 вещественное число
>>>3 + 5 +(1 + 7.0) если в выражении есть вещественное число результатом всегда будет
16.0 вещественное число
>>>5 – 3 Вычитаем из целого числа целое число получаем
>>>5 — 3.0 Вычитаем из целого числа вещественное число получаем
2.0 вещественное число
>>>2 * 3 Умножаем целое число на целое число получаем
>>>2 * 3.0 Умножаем целое число на вещественное число получаем
6.0 вещественное число
Деления в Python три:
>>>4 / 2 Делим целое число на целое число получаем
2.0 вещественное число
>>>4.0 / 2.0 Делим вещественное число на вещественное число
получаем
2.0 вещественное число
// Целочисленное деление – деление с округлением к меньшему. При таком округлении дробная часть отбрасывается, а целая часть округляется в меньшую сторону.
В случае, когда результатом вычисления является положительное число, то берется целая часть без изменений.
>>>5 // 2 Делим целое число на целое число получаем
>>>-3.0 // -2 Делим вещественное число на целое число получаем
1.0 вещественное число
В случае, когда результатом вычисления является отрицательное число, при округлении к меньшему, дробная часть отбрасывается, а целая часть числа уменьшается на единицу.
>>>5 // -2 Делим целое число на целое число получаем
-3 целое число, так то получаем -2.5, округляем к
меньшему получаем — 3
>>>-6.0 // 2.5 Делим вещественное число на вещественное число
получаем
-3.0 вещественное число
% Деление по модулю. Результатом деления по модулю является остаток от деления левой части выражения (делимого) на правую часть выражения (делитель), остаток будет всегда положительным числом.
>>>300 % 80 Делим по модулю получаем после деления на цело
>>>5.0 % 100 Делим по модулю получаем
5.0 т.к. 5 на 100 без получения дробной части не делится
ответ — 5
** Возведение в степень
>>>5 ** 2 Возводим целое число в степень тоже целое число
получаем
>>>2.0 ** 4 возводим вещественное число в степень (целое число)
получаем
16.0 вещественное число
Как видно из примеров если в выражении присутствует вещественное число, то ответом будет – вещественное число.
Приоритет выполнения операций как в арифметике.
>>>5 + 190 // 2 ** 2 % 10 * 5 / 4 — 2
Операции выполняются слева-направо и согласно приоритета.
1. Возведение в степень 2**2 = 4
2. Целочисленное деление 190//4=47
3. Деление по модулю 47%10=7
6. Сложение 5+8.75=13.75
7. Вычитание 13.75-2=11.75
Самый старший приоритет — возведение в степень
Следующий приоритет — Умножение *, Деление /, Целочисленное деление //, Деление по модулю % у этих операция приоритет одинаковый если они встречаются в одном примере то выполняются в порядке очереди слева-направо.
Следующий приоритет у сложения + и вычитания они выполняются самыми последними.
Если необходимо поменять приоритеты операций нужно воспользоваться скобками. Операции в скобках выполняются первыми.
Это все что я вычитал про числа.
По ссылкам можно почитать мои конспекты:
BestProg
Бинарные файлы. Примеры работы с бинарными файлами
В данной теме показано как можно сохранять данные в бинарных файлах без использования стандартных средств pickle или struct языка Python.
Содержание
Поиск на других ресурсах:
1. Понятие о бинарных файлах. Представление информации в бинарных файлах
В языке Python существуют средства для работы с бинарными или двоичными файлами. Бинарные файлы используют строки типа bytes . Это значит при чтении бинарных данных из файла возвращается объект типа bytes .
Открытие бинарного файла осуществляется с помощью функции open() , параметр mode которой содержит символ ‘b’ . Более подробно об открытии/закрытии бинарных файлов описывается здесь .
В отличие от текстовых, бинарные файлы не выполняют преобразования символов конца строки ‘\n’ .
Пример, демонстрирующий особенности представления информации в бинарных файлах.
Результат работы программы
На основании примера выше можно сделать следующие выводы:
- строка бинарных данных выводится как строка;
- отдельный символ (элемент) бинарных данных представлен в виде 8-битных целых чисел.
2. Запись/чтение списка, который содержит вещественные числа. Пример
Результат работы программы
3. Запись/чтение кортежа, содержащего строки символов. Пример
В данном примере строки символов в бинарном файле разделяются символом ‘\n’ . Таким образом, можно записывать и читать информацию без потери ее структуры.
Результат работы программы
4. Запись/чтение множества, содержащего вещественные числа. Пример
Множество, которое содержит только однотипные объекты можно записать в файл. В данном примере записывается множество вещественных чисел.
Результат работы программы
Вид файла myfile6.bin
5. Запись/чтение двумерной матрицы строк заданного размера. Пример
В примере матрица представлена в виде списка.
Результат работы программы
Вид файла myfile7.txt
6. Запись/чтение словаря. Пример
Пусть задан некоторый словарь, который нужно записать в бинарный файл.
Результат работы программы
Вид файла myfile8.txt
7. Копирование одного бинарного файла в другой
8. Объединение двух бинарных файлов. Пример
В примере реализована операция объединения двух файлов в результирующий третий файл. Сначала данные с файлов-источников считываются в списки. Затем происходит конкатенация этих списков и запись результирующего списка в файл результата.
Работа с файлами Python. Статья 3 (бинарные файлы)
Сегодня рассматриваем файлы с бинарной точки зрения. Материалы по текстовым файлам: статья 1 и статья 2 . Чтобы трактовать открываемые файлы как последовательность байтов необходимо, что бы в строке режима открытия присутствовала буква ‘b’, от слова binary.
Чтобы понять, как работать с файлами в бинарном формате проведем несколько экспериментов. Рассмотрим в начале файл, состоящий из текстовых строк и посмотрим результат чтения его в бинарном формате. Вот этот файл ( file1 )
Программа p400.py считывает файл в строку h и далее мы печатаем эту строку обычной функцией print() . В результате на консоль выводится следующее:
Префикс ‘ b ‘ в начале означает, что последующую строку далее следует рассматривать с точки зрения бинарных данных. В сущности это запись так называемого байтового массива, о котором речь пойдет далее. Структура строки довольно понятна:
- ‘\n’ — это символ перевода строки, в Linux это символ с кодом 10 . В Windows вам встретится также символ ‘\r’ код которого равен 13 и который тоже ставится в конце текстовой строки в такой последовательности \r\n .
- ‘\x’ — означает, что далее идут два символа, определяющие число в 16-м виде. Например \xd0 . В нашем случае это коды символов кириллицы.
- Ну и, наконец, одиночные символы — цифры и символы латиницы.
Представленные выше данные есть ни что иное, как массив байтов (bytes), к элементам которого можно обращаться по индексу . Ниже, в программе p400b.py мы используем его для преобразования списка чисел. В следующей статье мы вернемся к нему подробнее.
Теперь посмотрим, как можно получить содержимое файла в виду массива чисел ( p400a.py ).
Результат выполнения программы p400a.py:
49 50 51 52 10 113 119 101 114 10 208 176 208 177 209 129 208 180 10 10
Т.е. мы получили просто последовательность байтов некоторого файла. Обращаю внимание на код 10, который попадается в последовательности. Это как раз символ перехода на новую строку.
Ну и последнее, что хотелось бы сегодня рассказать о бинарных файлах (а это не последний урок), как полученную последовательность чисел опять превратить в файл. Смотрим программу p400b.py .
За исходную последовательность чисел мы взяли как раз последовательность полученную в программе p400b.py . В результате работы мы получим снова файл, содержащий строки
т.е. копию первоначального файла. Обращаю внимание на массив bytes , который использовался нами для записи в файл.
На сегодня о бинарных файлах все. Но продолжение следует. Следующая статья здесь .
Пока! Программируем на Python и подписываемся на мой канал Old Programmer .