Добавить в корзинуПозвонить
Найти в Дзене

Что реально нужно для №8 про упорядоченные слова

? В прошлый раз обсудили задачи с числами, теперь поговорим про второй основной тип 8 задания - поиск номера слова в упорядоченном списке. Он также отлично решается с помощью функции product из библиотеки itertools, но не без подводных камней. Как я объясняю по шагам: 1️⃣ Переменная для нумерации. Все слова пронумерованы с 1, значит, и мы начинаем с 1. Кто-то любит начинать с 0 и увеличивать номер перед обработкой слова. Я против ничего не имею, работать будет также, но сам так не объясняю. Если ученик спросит "Почему начинаем с 0?", кроме ответа "Так захотел" в голову ничего не приходит. А начинать нумерацию с 1 логично, так как она в условии начинается с 1. 2️⃣ Перебор подходящих последовательностей в алфавитном порядке (используем функцию sorted для набора букв внутри product) ❗️ Очень важное исключение - буква Ё! Из-за кодировки функция sorted думает, что она идет после Я. Так что если Ё встречается в наборе, руками записываем символы в нужном порядке. Зачастую ребята поняти

Что реально нужно для №8 про упорядоченные слова?

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

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

Как я объясняю по шагам:

1️⃣ Переменная для нумерации. Все слова пронумерованы с 1, значит, и мы начинаем с 1.

Кто-то любит начинать с 0 и увеличивать номер перед обработкой слова. Я против ничего не имею, работать будет также, но сам так не объясняю. Если ученик спросит "Почему начинаем с 0?", кроме ответа "Так захотел" в голову ничего не приходит. А начинать нумерацию с 1 логично, так как она в условии начинается с 1.

2️⃣ Перебор подходящих последовательностей в алфавитном порядке (используем функцию sorted для набора букв внутри product)

❗️ Очень важное исключение - буква Ё! Из-за кодировки функция sorted думает, что она идет после Я. Так что если Ё встречается в наборе, руками записываем символы в нужном порядке. Зачастую ребята понятия не имеют про этот подводный камень, но и составители не торопятся добавлять Ё в задачи.

Можно вообще не париться и всегда списывать буквы сразу в алфавитном порядке из последнего столбца примера в условии, но тут важно контролировать, что букв в исходном наборе не больше, чем первых слов в примере. Если строк примера не хватает - в конец сами добавляем недостающие буквы. Сегодня у меня один ученик на этом попался, популярная ошибка.

3️⃣ Склейка последовательности символов в строку с помощью метода join

4️⃣ Проверка всех условий: то ли это слово, которое мы ищем.

Сами проверки зачастую однотипные: слово начинается с чего-то, заканчивается чем-то, содержит или не содержит что-то. Тут просто используем индексы, срезы, операторы in и not in.

❕ С последними, кстати, видел, как ученик накосячил, перепутав местами что и где ищем. На это важно обратить внимание ребят, так как если перепутать, Python не ругается и не дает ошибок, а нарушение поведения может быть незаметным.

И здесь же, если нужно, проверяем сам номер. Не все условия связаны со словом. Например, в некоторых задачах просят номер последнего слова с четным номером. Так прям сразу проверяем, что наш номер делится на 2.

5️⃣ Выводим ответ, номер подходящего слова

6️⃣ Увеличение номера на 1.

Вот тут отлично ложится объяснение, что у нас номер самого первого слова 1, а номер каждого следующего - просто на 1 больше, значит, прежде, чем перейти к обработке следующего слова, нужно увеличивать.

⚠️ У слабых учеников тут есть проблема с отступами, важно подробно остановиться, что номер на 1 увеличиваем всегда, вне зависимости от прошлых проверок, просто после.

А еще этот тип зачастую отлично решается руками с помощью систем счисления. Считаем основанием системы количество букв в алфавите, присваиваем буквам в алфавитном порядке цифры по возрастанию, находим нужное слово, меняем буквы на соответствующие цифры, переводим в десятичную систему и почти готово! Помним только, что номер начинается с 1, а полученное таким образом значение первого слова - 0, надо всегда 1 прибавлять. Иногда этот способ гораздо быстрее программирования.

Ставьте 🔥, и скоро также расскажу про остальные задачи и самые популярные ошибки учеников в них)

#информатика