- Зачем постигать тайны посимвольного десятичного преобразования?
— Чтобы научиться решать задание №5 ЕГЭ Информатика
Задание №5 — это упражнение базового уровня сложности. Оно нацелено на проверку навыков экзаменуемого в выполнении и анализе простых алгоритмов.
🕒Время на выполнение задания = 4 минуты. Правильный ответ приносит 1 балл
Настоятельно рекомендую ознакомится с предыдущей статьей по решению Задания №5 ЕГЭ ↓
Данный материал посвящен подробному разбору первого типа Заданий №5 "Посимвольно двоичное преобразование"
🔥Если вы готовитесь к ЕГЭ по информатике и ищете эффективные способы решения заданий, эта статья для вас!
Условие задачи →
Рассмотрим подробно все пункты, указанные в условии ⤵
➀ Автомат получает на вход трёхзначное число
Трёхзначное число — это число, запись которого состоит из трёх знаков (цифр).
- Про какой "автомат" идёт речь?
— В этой задаче под "автоматом" понимается конкретный алгоритм, который выполняет определенные операции и выдает результат. Таким образом, "автомат" представляет собой программу, написанную на Python.
- Что значит "получает на вход трёхзначное число"?
— Программа в Python должна обрабатывать (принимать на вход) только трёхзначные числа
- Как получить трёхзначные числа в Python?
— Использовать цикл for + функцию range()
→ Range — это встроенная функция в Python, которая генерирует последовательность чисел
Функция range() хранит в себе список чисел, который начинается с первого указанного в скобках числа и заканчивается числом, на единицу меньшим второго. Поэтому range(1,4) — это 1, 2, 3
→ Цикл for + range позволяют получить все необходимые варианты трёхзначных чисел и выбрать подходящий
- Как создать цикл for в Python?
Для написания алгоритма вы можете использовать любую удобную среду (IDLE, PyCharm или Visual Studio). Для начинающих программистов рекомендую использовать именно IDLE.
В качестве примера можно взять небольшой диапазон значений в range →
Более детально с принципами работы цикла for() вы можете ознакомиться в данном материале ⤵
→ Запишем первую строчку кода в итоговое решение ⤵
📍Основная программа:
❗ПРОВЕРКА КОДА
Каждая новая строка в программе должна быть логически обоснованной и обязательно пройти проверку.
❓Ответы на вопросы по первому пункту условия:
⚠ Почему диапазон значений для range выбран именно такой?
— По условию задачи, автомат получает на вход трёхзначное число. Трёхзначные числа начинаются со 100 и заканчиваются на 999.
⚠ Почему второе число из диапазона равно 1000?
— При использовании range, следует помнить, что вторая граница не учитывается. Это означает, что если вы установите верхнюю границу в 1000, программа завершит последовательность на 999.
Переходим к следующему этапу →
➁ По этому числу строится новое число по следующим правилам:
Данный пункт разделён на две части ↓
2.1. Складываются первая и вторая, а также вторая и третья цифры исходного числа.
Чтобы сложить отдельные цифры числа, нужно как-то получить эти цифры. Точнее, попробовать «вытащить» эти цифры из числа.
- Например, дано число х = 127
→ Сумма первой и второй цифр: 1 + 2 = 3
→ Сумма второй и третьей цифр: 2 + 7 = 9
- Как «вытащить» цифру из числа?
☑ Для этого можно использовать индексы в Python. Индексы используются для доступа к элементам. Они позволяют получать или изменять отдельные элементы коллекции.
🔐Индексы — это ключ к тому, чтобы быстро найти и получить нужный элемент без поиска по всему числу.
Для того чтобы лучше разобраться в алгоритме, давайте обратимся к конкретному примеру →
Для числа (х = 237) нужно вывести на экран сумму первой и второй, второй и третьей цифры (2 + 3 = 5, 3 + 7 = 10, ответ: 5 10):
📥 Дано:
- a — переменная для суммы первой и второй цифр числа
- x[0] — нулевой индекс числа (х) или первая цифра числа (х)
- x[1] — первый индекс числа (х) или вторая цифра числа (х)
- b — переменная для суммы второй и третьей цифры числа
- x[2] — второй индекс числа (х) или третья цифра числа (х)
Реализация на Python:
❗После запуска программы появляется ошибка.
⭕ Что означает данная ошибка?
— Для понимания этой ошибки необходимо детально изучить текст, который выдаёт Python ⤵
- Type Error — Ошибка типа (в переводе с английского) или ошибка в типах переменных
- 'int' object is not subscriptable — 'int' не поддерживает индексацию
Это значит, что вы пытаетесь выполнить действие не применимое для данного типа переменной.
⭕ Как ошибка "TypeError" влияет на программу?
Ошибка "TypeError" может негативно сказаться на работе программы. В Python индексы могут использоваться только с упорядоченными коллекциями данных, такими как списки (list), строки (str) и кортежи (tuple).
❗Программа не работает, потому что некорректно выбран тип переменной
- Как исправить ошибку "TypeError"?
— Изменить тип переменной с (int) на (str)
⛔ Нельзя использовать индексы для работы с целыми числами (типа int, float)
Для изменения типа переменной с (int) на (str) нужно перед переменной записать служебное слово str() →
- str(имя_переменной)
Код программы для изменения типа переменной:
📍Теперь необходимо добавить метод str() в основную программу:
❗ПРОВЕРКА КОДА
Требуется проверить, изменяется ли тип переменной (x) при использовании функции str ⤵
☑ Программа работает верно
Возвращаемся к промежуточной задаче по вычислению суммы цифр для числа х = 237 →
Для числа (х = 237) нужно вывести на экран сумму первой и второй, второй и третьей цифры →
- Доработанный код программы с помощью метода str:
Отлично! Программа работает... но ответ получился неправильный (23 и 37). Почему не получились числа 5 и 10?
Для ответа на данной вопрос необходимо рассмотреть несколько важных моментов ⤵
❗3 ВАЖНЫХ МОМЕНТА
❶ Важный момент🔻
Переменные (а) и (b) будут строчного типа (str)
Переменная (х) имеет строчный тип. В переменные (a) и (b) были записаны суммы цифр (символов) переменной (х). Следовательно, переменные (a) и (b) тоже будут иметь строчный тип (str).
❷ Важный момент🔻
При сложении двух строк в Python будет выполнена операция конкатенации (склеивания) ⤵
📥 Конкатенация — это процесс соединения или объединения двух или более строк (или других элементов) в одну единую строку
→ Представьте себе, что у вас есть две бумажки. На первой написано "Привет", а на второй – "мир". Если взять обе бумажки и склеить их вместе, то получится "Приветмир". Это и есть конкатенация: соединение двух строк в одну.
❸ Важный момент🔻
Сложение строк в Python приводит к их склеиванию, что в данном случае неприемлемо. В программе нужно получить число 5 путем сложения чисел 3 и 2. Таким образом, числа должны быть только целого типа (int), а не строкового (str).
Вывод:
Необходимо перевести переменные (a) и (b) из строчного типа (str) в числовой тип (int)
- Как изменить тип переменной с (str) на (int)?
— Использовать встроенный метод int()
int() преобразует строку или число другого типа в целое число
Доработанный код программы ⤵
Отлично! Все работает →
→ Необходимо внести изменения в основную программу ⤵
📍Основная программа:
❗CHECK UP
На экран необходимо вывести результаты всех предыдущих действий:
- Запуск цикла for для переменной (x)
- Создание переменной (d) и изменение типа переменной (x)
- Сложение первой и второй, второй и третьей цифры текущего значения (d)
- Проверка в диапазоне чисел от 100 до 104 ⤵
- Проверка в диапазоне чисел от 231 до 235 ⤵
❓Ответы на вопросы по второму пункту условия:
- Что такое индексы в Python?
Индексы в Python — это как номера в книге или списке, которые помогают находить нужный элемент.
Пусть дана строка, состоящая из символов: "Python". У каждого элемента есть свой номер, начиная с 0: "P" — индекс 0, "y" — индекс 1, "t" — индекс 2 и так далее.
- Зачем изменять типы переменных в Python?
Разные типы данных подходят для разных задач.
Например, дана строка ("123"). Задача: сложить эту строку с другим числом. Решение: изменить тип строки на int или float.
Переходим к следующему этапу →
2.2. Полученные два числа записываются друг за другом в порядке убывания (без разделителей).
- О каких числах идёт речь?
— Полученные два числа это суммы первой и второй, второй и третьей цифры исходного числа (переменные a и b в программе)
- Что значит в порядке убывания?
— Переменные (a) и (b) необходимо записать в порядке убывания, сначала большее число, потом меньшее.
Например:
если (a = 5) и (b = 7) → 75
если (a = 13) и (b = 8) → 138
— Нужно определить какое из двух чисел больше, а какое меньше
Как определить большее (меньшее) число в Python?
— Использовать встроенную функцию max() или min()
- max ⤵
→ max() — это встроенная функция в Python, которая позволяет найти максимальное значение среди переданных ей чисел (аргументов)
Отлично! Теперь алгоритм понимает, какое из двух чисел больше. Именно его и нужно записать первым. Однако возникает другая проблема:
- Как определить, какое число записывать вторым?
— Использовать встроенную функцию min()
→ Даже если Python будет знать, какое из чисел большее. Сможет ли программа автоматически определить, что второе число меньше?
— Нет, не сможет.
- min ⤵
☑ Когда известно, какое из двух чисел больше, а какое меньше, то их без труда можно упорядочить по убыванию.
→ Порядок действий:
Необходимо написать код, который определит какое из двух чисел меньше, а какое больше. Далее значения этих чисел записываются в новые переменные. После этого, уже новые переменные записываются в порядке убывания.
Как записать числа в порядке убывания на Python?
- Определяем большее из двух чисел и записываем в новую переменную (one)
- Определяем меньшее из двух чисел и записываем в новую переменную (two)
- Переводим обе переменные (one, two) в строчный тип
- Используем операцию конкатенации (склеивания) и записываем переменные (one, two) в порядке убывания.
- Необходимо внести изменения в основную программу →
✔ ПРОВЕРКА КОДА
На экран необходимо вывести результаты всех предыдущих действий:
+ Запуск цикла for для переменной (x)
+ Создание переменной (d) и изменение типа переменной (x)
+ Сложение первой и второй, второй и третьей цифры текущего значения (d)
+ Нахождение наибольшего и наименьшего из двух чисел
+ Запись полученных двух чисел в порядке убывания
Переходим к следующему этапу →
➂ Пример. Исходное число: 348.
Суммы: 3 + 4 = 7; 4 + 8 = 12. Результат: 127
- Для чего в условии задачи записан данный пример?
— Данный пример служит для проверки работы алгоритма
Прежде чем записать итоговое решение, стоит запустить промежуточный алгоритм на предложенном примере. Если результаты совпали — хороший признак того, что алгоритм корректен.
❗Иногда ответ может совпасть с указанным в условии, но сам алгоритм будет содержать ошибки.
- range(348, 349) — данный промежуток отображает только одно число это 348
- print(total) — вывод текущего значения переменной (total) на экран
Переходим к следующему этапу →
➃ Укажите наименьшее число, в результате обработки которого автомат выдаст число 1412
- Что значит "в результате обработки которого"?
— Это число, которое будет получено после завершения алгоритма
- Как в Python выбрать число, подходящее под определенные условия?
— Использовать встроенную конструкцию (if)
С помощью условия (if) можно написать код, который сам бы отсеивал не нужные варианты.
- Что значит if в Python?
— Это оператор, позволяющий выполнить определённый участок кода только при соблюдении условий.
✔ Если условие истинно (True), то программа выполнит код, находящийся внутри блока if.
✖ Если условие не выполняется (False), код внутри блока if будет пропущен
В данном примере оба условия будут выполнены ⤵
❶ В первом примере значение переменной (а) равно 30. В условии указано: если переменная (а) превышает 15, тогда выполняется код внутри блока (if).
Внутри блока (if) находится функция (print), которая и будет вызвана. В результате на экране будет напечатано сообщение: "Переменная (а) больше 15".
❷ Во втором примере значение переменной (а) остаётся прежним (а = 30), значение переменной b = 28. В условии указано: если переменная (а) больше переменной (b), тогда выполняется код внутри блока (if).
Внутри блока (if) находится функция (print), которая и будет вызвана. В результате на экране будет напечатан сообщение: "Переменная (а) больше (b)".
❗Если текущее число равно 1412, то оно подходит. Если нет — алгоритм продолжит дальше искать необходимое число
- Как работает конструкция else?
— Эта часть кода выполняется, если условие ложно. Когда не сработал оператор (if)
📍Остается добавить проверку на условие в основной алгоритм и решение готово →
🔥Итоговая программа
Решение Задание №5 ЕГЭ "Посимвольное десятичное преобразование" ⤵
Ответ: 395
❓Ответы на вопросы по итоговому решению:
- Является ли число 395 действительно наименьшим ответом?
— Да, так как цикл for запущен по возрастанию (от меньшего значения к большему)
Поэтому результаты работы алгоритма тоже будут выводиться по возрастанию
- Как выполнить проверку?
— Убрать оператор break и вывести на экран все возможные варианты ответов
395 — наименьший результат работы алгоритма. После числа 395 результат только увеличивается: 486, 577, 593 и так далее.
👏 Поздравляю! Получен верный ответ и программа работает без ошибок.
- В Python, код (end = ' ') используется в функции print() и задает, что будет выведено в конце строки, после того как она будет распечатана.
- При использовании (end = ' ') после вывода текста вместо перевода строки добавляется пробел. Это позволяет печатать несколько значений в одной строке, разделенных пробелами.
⚠ Про break
Оператор break используется для немедленного выхода из цикла. Это может быть полезно, когда вы хотите остановить выполнение цикла при выполнении определенного условия.
В решении можно не использовать break. В таком случае, время выполнения программы будет дольше. На экране могут появится несколько значений (несколько вариантов ответов).
- Пример кода с циклом for, в котором отсутствует оператор break
- Пример кода с циклом for + break
Вывод значений переменной (x) прекратиться после (x = 3). Условие выполнено, оператор break сработал и завершил цикл for.
Оператор break может использоваться как в циклах for, так и в циклах while.
😉 Good job! Keep it up! Good luck!
⬇Ещё материалы по теме Python: