Как перевести из двоичной в десятичную в питоне
Перейти к содержимому

Как перевести из двоичной в десятичную в питоне

Функция перевода целого двоичного числа в десятичное

Закрепим пройденный материал с функциями и создадим реальный пример функции, которая вычисляет что-нибудь интересное.

Пожалуй, всякий начинающий программист должен написать самостоятельно программу перевода целого двоичного числа в десятичное. Именно этим мы и займёмся в этом примере.

Использование готовой функции перевода двоичного числа

На Питоне конечно уже есть готовое и весьма простое решение, которое делает перевод двоичной записи в десятичное число.

К примеру, есть функция int([object], [основание системы счисления]) — преобразование к целому числа в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.

В нашем случае, выбираем основание 2.

Вот пример выполнения этого кода:

Но мы ведь не ищем лёгких путей, а создаём свою функцию. Поэтому код будет следующий.

При помощи def задаём имя функции с соответствующим названием bin_to_dec и внутреннюю переменную.

Функция len(digit) будет возвращать длину числа или количество символов

Это необходимо, чтобы вычислить, сколько проходов будет для вычисления общей суммы по известной в информатике формуле перевода числа из двоичной формы в десятичную.

Проходы делает оператор цикла for i in range(0, dlina), где и i меняется от значения 0 до общего количества.

2**(dlina-i-1) — двойка как основание возводится в степень (dlina-i-1)

А вот эта конструкция вычисляет сумму, которая и будет числом в десятичной форме.

Пример выполнения программы показан на рисунке.

Конечно, данная функция достаточно простая и не имеет защиты от неправильного ввода, однако для образовательного примера вполне сгодится. Пробуем выполнить по памяти пример, а затем создать свои функции на Питоне.

ПРЕОБРАЗОВАНИЕ ТИПОВ ДАННЫХ В PYTHON

Для округления чисел с плавающей точкой используется функция round(). Функция использует банковское округление (по Гауссу) до ближайшего чётного целого, чтобы избежать серийного накопления погрешности. Например, round(1.5) + round(2.5) будет равен 4. При обычном математическом округлении сумма округленных чисел будет равна 5.

С помощью второго аргумента функции round() можно округлить число до заданного количества знаков после запятой. Если воторой аргумент не задан, то число округляется до целого. Получим:

Преобразование в строку

Для преобразования в строку используется функция str(). Аргументом функции str() может выступать число, строка, кортеж, список, множество, словарь, логическое значение, None.

Любой объект, преобразованный в строку, становится просто набором символов. Получим:

Преобразование в список

Для преобразования в список используется функция list(). Аргументом функции list() может выступать любой итерируемый тип данных (строка, кортеж, список, множество, словарь).

При преобразовании строки в список, мы получаем список, состоящий из символов строки.

Стоит обратить внимание на то, что при преобразовании словаря в список, в списке оказываются только ключи. Получим:

Преобразование в кортеж

Для преобразования в кортеж используется функция tuple(). Аргументом функции tuple() может выступать любой итерируемый тип данных (строка, кортеж, список, множество, словарь).

Преобразование в кортеж происходит по тому же принципу, по которому происходит преобразование в список.

Преобразование в множество

Для преобразования в множество используется функция set(). Аргументом функции set() может выступать любой итерируемый тип данных (строка, кортеж, список, множество, словарь).

Преобразование в множество происходит по тому же принципу, по которому происходит преобразование в список, но следует учитывать, что повторяющиеся элементы в множестве будут представлены только один раз. Получим: С помощью последовательного преобразования числа в строку, а затем в множество, можно найти набор символов, которые встречаются в числе. Получим:

Преобразование в словарь

Для преобразования в словарь используется функция dict().

Для преобразования в словарь каждый элемент преобразуемой последовательности должен быть парой. Первым элементом в паре может быть любой неизменяемый тип данных (число, строка, кортеж), а вторым — любой тип данных. Получим:

Преобразование в логический тип

Для преобразования в логический тип используется функция bool().

Функция bool() вернет False, если в качестве аргумента выступает пустая строка, нулевое число, None, пустой список, пустой кортеж или пустое множество. Непустая строка, ненулевое число, даже если оно отрицательное, вернут True. Непустое множество, непустой список или непустой кортеж, даже если они содержат один пустой элемент, вернут True. Получим:

Типы данных

Важнейшим компонентом любой компьютерной программы являются данные. По большому счету, программа — это данные, с которыми мы выполняем определенные операции. Данные бывают разными и у каждого типа данных свое предназначение и свои возможности.

Какие типы данных есть в Питоне

Некоторые типы данных позволяют записать только одну единицу информации в переменную. К ним, в частности, относятся:

  • целочисленное значение (integer)
  • десятичная дробь, или если быть более точным, число с плавающей точкой (float)
  • комплексное число (complex)
  • строка (string) и
  • логическое значение (boolean)

Именно этими типами данных мы и займемся на сегодняшнем занятии. Также существуют типы данных, в которых могут содержаться несколько элементов (так называемые коллекции, collections). К ним относятся:

  • списки (list)
  • словари (dictionary)
  • множества (set) и
  • кортежи (tuple)

Мы изучим их во втором разделе этого курса.

Работа с числами

Числовые данные могут быть представлены целым числом (integer), числом с плавающей точкой (float) и комплексным числом (complex).

Кроме того, в переменную типа float можно записать значение в виде экспоненциальной записи (scientific notation).

Операции с числами

С числами возможны арифметические операции, операции сравнения и логические операции. Повторим уже известные нам арифметические операции.

Новыми для нас будут целочисленное деление и операция взятия остатка от деления.

Также напомню про операторы сравнения.

Здесь хотелось бы обратить внимание на два момента. Во-первых, результатом сравнения становится логическое значение True или False (об этом чуть позднее). Во-вторых, еще раз напомню, что == и = — это разные символы. В первом случае мы проверяем равенство двух значений, во втором — присваиваем значение переменной.

Кроме этого, существуют и чисто логические операции И, ИЛИ и НЕ.

Перевод чисел в другую систему счисления

Перевод в двоичную систему, то есть в систему нулей и единиц, можно сделать с помощью функции bin(). Для обратного преобразования в десятичную систему достаточно функции int() с указанием системы счисления, из которой происходит преобразование.

Перевод числа в восьмеричную и шестнадцатеричную систему счисления осуществляется аналогичным образом с помощью функций oct() и hex() соответственно.

Поначалу будет казаться, что запомнить все эти детали невозможно, со временем, а точнее, с практикой логика и синтаксис (то, как написаны команды) Питона станут вполне привычными.

Строковые данные

Как мы уже знаем, строку нужно заключить в одинарные или двойные кавычки.

Такой тип данных можно разбить на несколько строк (multiline string). Для этого нужно использовать тройные одинарные или двойные кавычки.

Длина строки

Функция len() позволяет посчитать количество символов в строке.

Объединение строк

Две и более строки можно объединить друг с другом. Пробелы, если они нужны, добавляются отдельно.

Индекс символа в строке

Как мы помним, при создании строки, Питон автоматически создает два индекса, нумерует символы от начала и до конца (начиная с нуля, положительный индекс) и с конца и до начала отрицательный индекс).

положительный и отрицательный индексы строки в Питоне

Срезы строк

Также можно делать срезы, то есть выбирать сразу несколько символов.

Обратите внимание, что для того чтобы выбрать четвертый элемент, мы указываем его индекс (три, потому что начинаем с нуля). Затем мы указываем элемент до которого, но не включая, мы хотим сделать срез. В данном случае это индекс шесть, соответствующий седьмому элементу.

срез строки в Питоне

Циклы в строках

Символы в строке можно вывести один за другим с помощью цикла for.

Методы .strip() и .split()

Метод .strip() удаляет символы в начале и в конце строки. Это бывает полезно, если в базе данных значения записаны, например, вместе со служебными символами и от них нужно избавиться.

Метод .split() делит строку на части. По умолчанию, по пробелам, но можно указать другой разделитель.

В результате получился питоновский список. Если посчитать длину списка, то мы получим количество слов в тексте.

Замена символа в строке

Бывает полезно заменить один символ другим. Например, если дробная часть отделена запятой, и напрямую преобразовать такую строку во float не получится.

Логические значения

В программировании иногда очень полезно задать выражению истинное или ложное значение и в зависимости от этого выполнить те или иные действия. Мы уже видели ранее, что при сравнении Питон выдает значения True или False. На самом деле эти значения сами по себе являются отдельным типом данных и могут быть записаны в переменную.

Логический тип данных называется bool или boolean в честь Джорджа Буля, который создал так называемую булеву алгебру (Boolean algebra) или алгебру логики. Она, в частности, лежит в основе любого компьютера, но также используется в теории множеств и статистике.

Теперь рассмотрим несложную программу.

Подведем итог

На этом занятии мы изучили три типа данных: числовые данные, строки и логический тип данных. С числовыми данными можно выполнять арифметические операции, операции сравнения и логические операции.

Работая со строками, мы можем определить количество символов в строке, объединить несколько строк, посмотреть символ по его индексу, сделать срез строки, просмотреть каждый из символов в цикле for, избавиться от ненужных символов по краям строки или разделить строку на отдельные части. Кроме того, мы можем заменить один элемент строки на другой.

Помимо этого, мы можем записать в переменную логическое значение True или False, и использовать его при написании программ.

Вопросы для закрепления

Какими типами данных представлены числовые значения?

Посмотреть правильный ответ

Ответ: целое число (integer), число с плавающей точкой (float) и комплексное число (complex)

Какой символ используется по умолчанию в методах .strip() и .split()?

Посмотреть правильный ответ

Ответ: пробел. Метод .strip() по умолчанию удаляет пробелы по краям строки, метод .split() по умолчанию делит строку по пробелам.

Дополнительные упражнения⧉ вы найдете в конце ноутбука.

На следующем занятии мы вернемся к изучению условий и циклов, но уже на гораздо более продвинутом уровне.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *