Тренажёр: перебор слов по условию
Тренажёр придумывает набор букв и условие. Напишите программу, которая печатает подходящие слова, нажмите «Выполнить», затем «Проверить» — вывод сверится с эталоном.
Список слов — это как числа
Слова одной длины из алфавита в m букв идут в том же порядке, что и числа в системе счисления с основанием m. Первое слово списка — это «число» из всех первых букв, а его номер — единица.
Например, буквы А, К и слова длины 2 дают список: АА — 1, АК — 2, КА — 3, КК — 4.
Перебираем все варианты: product
Чтобы решить задачу, нужно перебрать все возможные варианты — все слова заданной длины из алфавита. Удобно сразу сформировать их готовым инструментом из модуля itertools.
Это функция product. Python про неё по умолчанию не знает, поэтому её нужно импортировать: from itertools import product.
Ей передают параметры — набор (alphabet) и сколько раз повторять (repeat=length) — и она сразу строит все возможные комбинации; вложенные циклы писать не нужно. Результат удобно сразу подавать в for: на каждой итерации приходит очередной набор (кортеж букв).
Кортеж склеиваем в слово: w = ''.join(comb); номер слова считаем счётчиком (i = i + 1).
Фильтры из условия
После перебора накладываем условия: номер слова чётный, слово не начинается с некоторых букв, содержит ровно k заданных букв. Подходящие слова печатаем — по одному на строку.
Как отсеивать слова: continue
Внутри цикла проверяем условия-исключения. continue прерывает текущий проход цикла и переходит к следующему слову (это не break — цикл не останавливается). Неподходящее слово пропускается, до print(w) доходят только подходящие. Поэтому проверку пишут «наоборот»: if w.count('О') != 1: continue означает «если буква О встречается не ровно один раз — пропустить это слово».
Как пользоваться этим режимом. Прочитайте алфавит, длину слова и условия, напишите программу, нажмите «Выполнить», затем «Проверить». Если не получается — откройте решение и вставьте готовый код.