Найти в Дзене
МОЙ РЕПЕТИТОР

Тайны посимвольного двоичного преобразования: просто и понятно

Оглавление
  • Зачем постигать тайны посимвольного двоичного преобразования?

Чтобы научиться решать задание №5 ЕГЭ Информатика

Задание №5 — это упражнение базового уровня сложности. Оно нацелено на проверку навыков экзаменуемого в выполнении и анализе простых алгоритмов.

🕒Время на выполнение задания = 4 минуты. Правильный ответ приносит 1 балл.

🔥Если вы готовитесь к ЕГЭ по информатике и ищете эффективные способы решения заданий, эта статья для вас!

Условие задачи →

Условие задачи ЕГЭ по Информатике задание №5 "Посимвольное двоичное преобразование"
Условие задачи ЕГЭ по Информатике задание №5 "Посимвольное двоичное преобразование"

Рассмотрим подробно все пункты, указанные в условии ⤵

На вход алгоритма подаётся натуральное число N

Натуральные числа — это числа, которые используются для счета предметов или вещей.

Натуральные числа начинаются с 1, 2, 3, ... и до бесконечности (+∞).

  • Как получить натуральные числа в Python?

Использовать цикл for()

Цикл for() предназначен для перебора значений из заданного диапазона. Цикл for() предоставляет возможность получить все необходимые варианты и выбрать подходящий.

-3

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

  • Создание цикла for() в Python

Для написания алгоритма вы можете использовать любую удобную среду (IDLE, PyCharm или Visual Studio). Для начинающих программистов рекомендую использовать именно IDLE.

Пример работы циклом for() в Python. Диапазон от 1 до 6 (не включительно).
Пример работы циклом for() в Python. Диапазон от 1 до 6 (не включительно).

Более детально с принципами работы цикла for() вы можете ознакомиться в данном материале

Полный гайд по циклу FOR в Python
МОЙ РЕПЕТИТОР20 сентября 2024

📈 Первый этап программы пройден. Запущен цикл for() для перебора натуральных значений переменной N.

→ Запишем первую строчку кода в итоговое решение ⤵

📍Основная программа:

Начало программы для решения задания ЕГЭ №5 "Посимвольное двоичное преобразование".
Начало программы для решения задания ЕГЭ №5 "Посимвольное двоичное преобразование".

Почему диапазон значений для range() начинается с 1?

— По условию задачи, на вход алгоритма поступает натуральное число. Натуральные числа начинаются с 1, значит и range() тоже должен начинаться с 1.

-6

Почему второе число из диапазона равно 100?

Вторая граница для range() подбирается интуитивно. Если программа написано верно, ошибок нет, а ответ не выводится, то необходимо увеличивать диапазон:

range(1, 100) → range(1, 1000) → range(1, 10000) и так далее.

Переходим к следующему этапу →

Строится двоичная запись числа N

Двоичная запись числа — это способ представления чисел, используя только две цифры: 0 и 1

  • Как перевести в двоичную систему счисления (2 СС) в Python?

— Использовать встроенную функцию bin()

— Использовать f - строки

📥Как работает функция bin()?

  1. Вы задаёте целое число. Это число будет преобразовано в двоичный формат.
  2. Python применяет функцию bin() к этому числу. Функция возвращает строку, которая начинается с префикса '0b'.
Пример работы функции bin() в Python. Использование срезов для строк.
Пример работы функции bin() в Python. Использование срезов для строк.

  • Как убрать '0b' перед числом после перевода в 2 СС?

— Использовать срезы в Python

Срезы — это удобный способ работы с последовательностями (строками). Они позволяют разбивать строки на необходимую длину и извлекать нужные символы. Пример работы срезов в Python ⤵

Пример работы срезов в Python, при переводе чисел в 2 СС, с помощью функции bin().
Пример работы срезов в Python, при переводе чисел в 2 СС, с помощью функции bin().

📥Как работают f - строки для перевода в 2СС?

Необходимо перед строкой поставить букву f или F. Внутри строки используются фигурные скобки {} для вставки значений переменных или выражений.

Пример использования f - строк в Python ⤵

Пример использования f - строк в Python для перевода в 2 СС.
Пример использования f - строк в Python для перевода в 2 СС.

При переводе в другие системы счисления с помощью f - строк, перед строкой не появляются префиксы '0b', '0o' или '0x'. Использование срезов не требуется. Вы сразу получаете готовый ответ.

📍Основная программа:

В решении будет использоваться метод bin(). Вы можете использовать f - строки, вместо bin(). При правильном переводе в 2 СС на результат это не повлияет.

  • 2 способа перевода в 2 СС bin() ➕ f - строки ⤵

Для чего вводится новая переменная (х)?

— Для упрощения работы и лучшего понимания кода.

Результат перевод в двоичную СС сохранится в переменной (x). В дальнейшем все операции будут выполняться с использованием переменной (x). Без участия переменной (n).

❗ПРОВЕРКА КОДА

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

-11

В алгоритме появился новый метод — bin(). Для проверки его корректности запустите программу на ограниченном диапазоне чисел, например, от 9 до 16.

Обязательно выводите все промежуточные результаты с помощью функции print()

Проверка кода с помощью функции print(). Вывод на экран промежуточных результатов.
Проверка кода с помощью функции print(). Вывод на экран промежуточных результатов.

Что делать с функцией print() после проверки кода?

— Функцию print() не обязательно удалять из программы. Можно просто закомментировать эту строку и дальше продолжить создавать код

  • Что значит (#) в Python?

— "Хэштег" закрывает код. Python просто проигнорирует данную строку.

☑ На данном этапе программа работает верно

Следующий этап →

➂ Складываются все цифры двоичной записи числа

— необходимо найти сумму всех цифр цифр числа

Например, дано число х = 1010, сумма всех его цифр будет равна: 1 + 0 + 1 + 0 = 2

Перед созданием алгоритма на Python важно ответить на некоторые вопросы:

  • Какой тип данных у переменной (n)?

— После запуска цикла for() переменная (n) будет принимать натуральные значения

n = 1, 2, 3, 4, 5 ... 100

Все указанные значения — целые числа с типом (int)

Каждый проход цикла for() переменная (n) будет принимать новое значение. Каждое новое значение будет иметь целый тип данных (int) ⤵

Программа для анализа типа переменной (n) в цикле for().
Программа для анализа типа переменной (n) в цикле for().

  • Что такое int()?

— Тип данных в Python. Используется для работы с целыми числами.

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

  • Какой будет тип переменной (n) после перевода в 2 СС?
  1. Переменная (n) останется целого типа (int).
  2. Переменная (х) будет строчного типа. Так как функция bin() возвращает результат в виде строки.

На следующем этапе программы число (n) переводится в 2 СС с помощью встроенной функции bin(). Результат этого перевода записывается в переменную (х)

n = (1 .. 100) → x = bin(n) → x = ('1', '10', '11' ... )

Код программы с выводом на экран переменной (х) и типа переменной (х).
Код программы с выводом на экран переменной (х) и типа переменной (х).

❗Результат перевода переменной (n) был записан в переменную (x)

значит, нужно НАЙТИ СУММУ ЦИФР ПЕРЕМЕННОЙ Х

  • Как подсчитать сумму цифр в переменной (х)?

— Использовать метод count()

  • Почему удобно использовать именно метод count()?

— Переменная (х) имеет строчный тип (str) и состоит только из 0 и 1

Метод count в Python помогает узнать, сколько раз встречается какой-либо символ внутри строки или другого набора данных.

Пример работы метода count() в Python.
Пример работы метода count() в Python.

  • Как подсчитать сумму цифр с помощью метода count()?

— Чтобы подсчитать сумму цифр строки с помощью метода count(), нужно количество символов умножить на сам символ.

-18

Чтобы понять как использовать count() для подсчёта суммы цифр в строке, рассмотрим следующий пример:

Код программы для нахождения суммы цифр с помощью метода count().
Код программы для нахождения суммы цифр с помощью метода count().

📍Теперь необходимо добавить метод count() в основную программу:

Код программы после завершения третьего этапа (метод count).
Код программы после завершения третьего этапа (метод count).

Зачем в программе новая переменная sum1?

— Для сохранения результата в отдельной переменной и последующей работы с этой переменной (sum1)

❗ПРОВЕРКА

На экран необходимо вывести результаты всех предыдущих действий:

  1. Перебор натуральных значений для переменной (n)
  2. Перевод (n) в 2 СС и последующая запись в переменную (x)
  3. Подсчет суммы цифр в переменной (x) и запись в переменную (sum1)
Вывод на экран результата всех ранее выполненных операций.
Вывод на экран результата всех ранее выполненных операций.

☑ Программа работает верно

Переходим к следующему этапу

➃ Остаток от деления суммы на 2

Как определить остаток от деления?

→ Необходимо взять натуральное число и разделить его на другое число. Если число разделилось полностью (без остатка), то остаток будет равен 0. Если число полностью не делится (с остатком), то необходимо выписать остаток.

  • 4 : 2 = 2 (остаток 0)
  • 5 : 2 = 2 (остаток 1)
  • 8 : 3 = 2 (остаток 2)

Для получения остатка от деления в Python нужно использовать данный оператор:

  • % — остаток от деления в Python
-22

Пример кода для понимания работы оператора (%) в Python

Пример кода для понимания работы оператора (%) в Python.
Пример кода для понимания работы оператора (%) в Python.

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

➄ Остаток от деления суммы на 2 дописывается в конец числа

Остаток от деления получен в пункте 4 с помощью оператора (%)

Теперь необходимо этот остаток записать в конец числа.

  • Как записать выражение в конец числа?

Использовать операцию конкатенации для строк

-24

Конкатенация это процесс соединения или объединения двух или более строк (или других элементов) в одну единую строку.

'+' операция в Python, используется для конкатенации (объединения, склеивания) строк.

→ Представьте себе, что у вас есть две бумажки. На первой написано "Привет", а на второй – "мир". Если взять обе бумажки и склеить их вместе, то получится "Приветмир". Это и есть конкатенация: соединение двух строк в одну.

Пример использования конкатенации в языке Python.
Пример использования конкатенации в языке Python.

Теперь необходимо с помощью конкатенации приписать остаток от деления в конец числа ⤵

Код программы, который записывает остаток от деления на 2 в конец заданного числа.
Код программы, который записывает остаток от деления на 2 в конец заданного числа.

❗При попытке записать остаток от деления в конец числа, Python выдал ошибку

  • Что означает данная ошибка?
  1. TypeError — Ошибка типа (в переводе с английского) или ошибка в типах переменных
  2. can only concatenate str (not "int") to str — можно только объединять str (не "int") в str (в переводе с английского)

Это значит, что вы пытаетесь выполнить действие не применимое для данных типов переменных. В Python нельзя складывать числа со строками. Это называется строгая типизация!

Складывать можно отдельно числа с числами (int) + (int) или строки со строками (str) + (str)

❗Увидели такую ошибку — обязательно проверьте тип каждой переменной

  • Как исправить ошибку "TypeError"?

— Изменить тип переменной с (int) на (str)

-27

Для изменения типа переменной с (int) на (str) нужно перед переменной записать служебное слово str()

  • str(имя_переменной)
Исправленный код программы:
Правильный код программы для добавления справа остатка от деления суммы цифр на 2.
Правильный код программы для добавления справа остатка от деления суммы цифр на 2.

❗Важные моменты

  1. Чтобы приписать (приклеить) цифру к другому числу необходимо использовать операцию конкатенации (+)
  2. Конкатенация работает только со строчным типом данных (str). Поэтому обе переменные должны быть строчного типа.
  3. Для добавления цифры справа следует сначала написать строку (переменную), затем использовать знак '+' и в конце записать ту цифру (переменную), которую вы собираетесь приписать.

📍Основная программа:

Код программы после завершения пятого этапа.
Код программы после завершения пятого этапа.

❗ПРОВЕРКА

Нужно удостовериться, правильно ли к числу добавляется остаток от деления суммы цифр на 2. Для этого на экран выводится значение переменной (х) сначала до добавления остатка, а затем после ⤵

Вывод на экран результатов всех ранее выполненных операций после 5 этапа.
Вывод на экран результатов всех ранее выполненных операций после 5 этапа.

☑ Программа работает верно

Переходим к следующему этапу

Над этой записью производятся те же действия 

— справа дописывается остаток от деления суммы цифр на 2

  • Над какой записью производятся действия?

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

  • Какие действия?

— Вычислить сумму цифр переменной (х). Дописать справа к (х) остаток от деления суммы цифр на 2

  • Как записать данный алгоритм на Python?

Рассмотрим пример → Пусть дана начальная строка: s = '11010'. В переменную (sm1) записывается сумма цифр строки (s): 1 + 1 + 0 + 1 + 0 = 3 →

Пример для понимания алгоритма из пункта 6 в Python.
Пример для понимания алгоритма из пункта 6 в Python.

Далее, к текущему значению переменной s = '11010' справа дописывается остаток от деления суммы (sm1 = 3) на 2:

s = '11010' + str(3 % 2) → s = '110101'

К текущему значению (s = '110101') применяются те же действия, только без создания дополнительной переменной для суммы цифр

Как изменяется строка в процессе работы алгоритма: Было vs Стало.
Как изменяется строка в процессе работы алгоритма: Было vs Стало.

→ s = '110101' + str(s.count('1') % 2) → s = '110101' + '0' → s = '1101010'

📍Теперь необходимо реализовать данную идею и в основной программе:

  • I этап

— Вычисление суммы цифр текущего значения (х) и запись в переменную (sum1)

Код программы после завершения ➅ этапа (I)
Код программы после завершения ➅ этапа (I)

  • II этап

— Справа дописывается остаток от деления (%) суммы цифр (sum1) на 2

Код программы после завершения ➅ этапа (II)
Код программы после завершения ➅ этапа (II)

❗ПРОВЕРКА

Вывод на экран результатов всех ранее выполненных операций после 6 этапа ⤵

Вывод на экран результатов всех ранее выполненных операций после 6 этапа.
Вывод на экран результатов всех ранее выполненных операций после 6 этапа.

☑ Программа работает верно

Следующий этап

Полученная таким образом запись является двоичной записью искомого числа  R

На данном этапе изменений в решении не будет. Только анализ текущей ситуации.

Как написано в условии 🆚 Как записать в Python

Промежуточные итоги после 7 этапа. Как переписать условие задачи на язык Python.
Промежуточные итоги после 7 этапа. Как переписать условие задачи на язык Python.

❗Важный момент

Необходимо ввести новую переменную (r) — десятичная запись числа (n)

Следующий этап

➇ Укажите минимальное число  R, которое превышает 43 и может являться результатом работы алгоритма

Пояснение к данному пункту условия ↓

  • Что представляет собой число R?

— Десятичная запись числа (n)

После выполнения всех операций с числом (n) его следует преобразовать в десятичную систему счисления, что и будет соответствовать числу R.

-37
  • Минимальное число?

— Необходимо подобрать наименьшее значение для числа R

  • Что значит "может являться результатом работы алгоритма"?

— Значение R обязательно должно быть получено путем преобразования переменной (n) в десятичную систему счисления

  • Как перевести число в 10 СС?

— Использовать встроенный метод int()

-38
  • Как работает метод int() в Python?

Синтаксис: int(x, base)

  • x — значение, которое нужно преобразовать в целое число (str)
  • base — основание системы счисления (от 2 до 36)

📥Пример перевода из 2 СС в 10 СС с помощью метода int() ⤵

Код программы для перевода чисел из 2 СС в 10 СС с помощью метода int().
Код программы для перевода чисел из 2 СС в 10 СС с помощью метода int().

Важное правило:

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

📍Теперь необходимо реализовать данный алгоритм в основной программе:

Вывод на экран результатов всех ранее выполненных операций после 8 этапа.
Вывод на экран результатов всех ранее выполненных операций после 8 этапа.

Следующий этап

➈ Которое превышает 43

Что нужно написать в Python, чтобы определить, что число превышает 43?

Прежде чем ответить на данный вопрос ↑, необходимо вспомнить предыдущие моменты в решении:

  1. В начале программы был получен диапазон натуральных чисел: range()
  2. Далее эти числа переводятся в 2 СС: bin()
  3. Потом считается сумма цифр каждого числа и остаток от деления на 2 этой суммы записывается в конец числа: count() + %
  4. Затем эти действия повторяются еще раз (сумма цифр + остаток от деления на 2 в конец числа): count() + %
  5. Наконец, данное число переводится в 10 СС: int()

❗ И именно ЭТО число (в 10 СС) должно быть больше, чем 43 →

Что нужно написать в Python, чтобы определить, что число превышает 43?

— Использовать условие (if)

С помощью условия (if) можно написать код, который сам бы отсеивал не нужные варианты.

-41
  • Что значит if в Python?

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

✔ Если условие истинно (True), то программа выполнит код, находящийся внутри блока if.

✖ Если условие не выполняется (False), код внутри блока if будет пропущен

Пример кода в Python на понимание работы оператора (if).
Пример кода в Python на понимание работы оператора (if).

❗Если текущее число больше, чем 43, то оно подходит. Если нет алгоритм продолжит дальше искать необходимое число

📍Остается добавить проверку на условие в основной алгоритм и решение готово

🔥Итоговая программа

Решение Задание №5 ЕГЭ "Посимвольное двоичное преобразование" ⤵

Код программы для решения задания №5 ЕГЭ "Посимвольное двоичное преобразование".
Код программы для решения задания №5 ЕГЭ "Посимвольное двоичное преобразование".

👏 Поздравляю! Получен верный ответ и программа работает без ошибок.

Удачи!

🔜Ещё материалы по теме Python:

Всё, что нужно знать о типах данных в Python
МОЙ РЕПЕТИТОР2 февраля

Наука
7 млн интересуются