Недавно где-то встретился текст о том, что в Yandex (и не только у них) при поступлении на работу любят задавать задачку о построении пирамиды с помощью символьной графики. Не знаю, насколько это правда, но стало интересно — а как же это реализовать?
Фактически, кроме построения пирамидки в виде … пирамиды:) данная задача может иметь варианты:
— банальная односторонняя пирамидка с расширением вправо-вниз (решается банальным циклом, пример которого ниже):
Как видно из кода — односторонняя пирамидка формируется в списке по циклу, логика которого сводится к алгоритму: загоняем в список символ #, выводим на печать, увеличиваем на единицу значение переменной stage — которая отвечает за количество уровней, добавляем в список символ # и снова выводим на печать и далее-далее-далее. Причем, все это делается до того момента, пока количество строк не будет равно заданному количеству в переменной quantity. В целом — тут все просто 🙂
— Более интересная задача с пирамидкой с расширением влево-вниз и уж совсем интересна пирамидка с центром и расширением вниз-в стороны. Основная сложность в данной задаче, как мне кажется — построение цикла в цикле. Саму логику этого можно представить так: у нас имеется переменная, которая обозначает общую максимальную ширину яруса, переменная, отвечающая за число пробелов в ярусе, и переменная, отвечающая за количество символов # в строке. Т.е. первая строка у нас складывается из:
Первый ярус: общее количество символов в ярусе, из которых один символ в конце строки — символ #, а все предыдущие — пробелы
Второй ярус: общее количество символов в ярусе минус, из которых два символа в конце строки — символ #, а все предыдущие — пробелы
и далее … и конечно, можно создать цикл в цикле, однако — почему бы не пойти другим путем?
Включаем режим лентяя, и открываем одну из моих предыдущих записей, посвященных работе со строками в Python. В одной из пунктов я рассказываю о выравнивании текста в строках: по центру, по левой стороне или правой. Ну — теперь все точно очень и очень просто 😉
Как видно из кода:
piramide = [] — создаем список
text = str(‘#’) — создаем переменную text (тот самый, который будет заполнять строку)
quantity = int(15) — задаем количество ярусов
stage = int(0) — начальное значение количества ярусов
while stage < quantity: - цикл будет работать, пока начальное количество ярусов не станет равным заданному количеству ярусов
piramide.append(text) — добавляем в список piramide текст #
print(text.rjust(quantity)) — выводим список на печать с выравниванием справа (за это отвечает rjust (если нужно будет выравнивать пирамиду по левому краю — используем ljust, если по центру — center). В то же время нужно подчеркнуть, что в случае работы кода по центру — пирамида получается несколько … кривоватой, ибо мы добавляем по одному символу в каждую последующую строку. Что бы исправить это — в последней строке нужно добавлять по два символа 😉
stage = stage + 1 — добавляем в переменную единицу т.е. увеличиваем количество и постепенно доходим до заданного максимума
text = text + ‘#’ — в переменную так же добавляем символ — что бы в следующей итерации вывести на символ больше.
Код так же доступен по ссылке на GitHub. В случае возникновения вопросов — пишите на почту. И не забывайте сделать репост на свою страницу в социальных сетях 🙂
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️