Вывод лесенки из символов — популярная задача для всех языков программирования, которая позволяет отточить навыки работы с циклами. В этой статье мы разберем как с помощью циклов вывести 4 типа лесенок из символов высотой, заданной пользователем, в Python.
Мы будем выводить следующие типы лесенок:
Прямая:
*
**
***
****
*****
Обратная:
*****
****
***
**
*
Перевернутая:
*****
****
***
**
*
Зеркальная:
*
**
***
****
*****
- Вывод прямой лесенки с использованием цикла for
- Пример кода
- Вывод
- Объяснение кода
- Вывод прямой лесенки с использованием цикла while
- Пример кода
- Вывод
- Объяснение кода
- Вывод обратной лесенки с использованием цикла for
- Пример кода
- Вывод
- Объяснение кода
- Вывод обратной лесенки с использованием цикла while
- Пример кода
- Вывод
- Объяснение кода
- Вывод перевернутой лесенки с использованием цикла for
- Пример кода
- Вывод
- Объяснение кода
- Вывод перевернутой лесенки с использованием цикла while
- Пример кода
- Вывод
- Объяснение кода
- Вывод зеркальной лесенки с использованием цикла for
- Пример кода
- Вывод
- Объяснение кода
- Вывод зеркальной лесенки с использованием цикла while
- Пример кода
- Вывод
- Объяснение кода
Вывод прямой лесенки с использованием цикла for
Для создания прямой лесенки из символов * воспользуемся циклом, который будет построчно формировать каждый уровень лесенки. На каждом шаге мы будем добавлять один символ * к строке и выводить ее на экран. Количество символов в каждой строке будет увеличиваться на каждом шаге, начиная с одного и заканчивая заданным числом n. Таким образом, каждая строка будет иметь на один символ * больше, чем предыдущая.
Пример кода
# Запрашиваем высоту лесенки у пользователя
n = int(input("Введите высоту лесенки: "))
# Выводим прямую лесенку
for i in range(1, n + 1):
print("*" * i)
Вывод
Введите высоту лесенки: 5
*
**
***
****
*****
Объяснение кода
- Пользователю предлагается ввести высоту лесенки с клавиатуры.
- Значение высоты преобразуется в целое число и сохраняется в переменной
n
. - В цикле
for
перебираются значения от 1 доn
включительно. - На каждой итерации выводится строка, состоящая из символа
*
, умноженного на текущее значение итерацииi
.
Вывод прямой лесенки с использованием цикла while
Мы можем воспользоваться циклом while
, который будет работать до тех пор, пока height
больше 0. После каждой итерации будем уменьшать height
на 1.
Пример кода
# Пользователь вводит высоту лесенки
height = int(input("Введите высоту лесенки: "))
# Инициализируем переменную для хранения количества звездочек
stars = 1
# Выводим лесенку
while height > 0:
print('*' * stars)
stars += 1
height -= 1
Вывод
Введите высоту лесенки: 5
*
**
***
****
*****
Объяснение кода
- Пользователь вводит высоту лесенки с помощью функции
input
. Введенное значение преобразуется в целое число с помощьюint
. - Создается переменная
stars
, которая будет использоваться для отслеживания количества звездочек, которые будут выводиться на каждом уровне лесенки. Изначально у нас одна звездочка на первом уровне. - Запускается цикл
while
, который будет работать до тех пор, пока значениеheight
(введенное пользователем количество уровней лесенки) больше 0. - На каждой итерации цикла выводится строка, состоящая из
stars
звездочек, что создает один уровень лесенки. - После вывода строки количество звездочек
stars
увеличивается на 1, чтобы на следующем уровне была на одна звездочка больше. - После каждой итерации значение
height
уменьшается на 1, что означает, что мы переходим к следующему уровню лесенки. - Цикл продолжает выполняться, пока
height
не станет равным 0, после чего программа завершается.
Вывод обратной лесенки с использованием цикла for
Для вывода обратной лесенки с использованием цикла в Python мы можем использовать цикл for
, который будет перебирать значения от n
до 1 включительно и на каждой итерации выводить строку, состоящую из символа *
, умноженного на текущее значение итерации.
Пример кода
# Пользователь вводит высоту лесенки
height = int(input("Введите высоту лесенки: "))
# Цикл для вывода обратной лесенки
for i in range(height, 0, -1):
print('*' * i)
Вывод
Введите высоту лесенки: 5
*****
****
***
**
*
Объяснение кода
- Пользователю предлагается ввести высоту лесенки с клавиатуры.
- Введенное значение сохраняется в переменной
height
после преобразования в целое число с помощью функцииint()
. - Затем используется цикл
for
, который перебирает значения отheight
до 1 включительно с шагом -1. Это делается с помощью функцииrange(height, 0, -1)
. - На каждой итерации цикла формируется строка, состоящая из символа
*
, повторенногоi
раз, гдеi
— текущее значение итерации. - Сформированная строка выводится на экран с помощью функции
print()
.
Вывод обратной лесенки с использованием цикла while
Давайте теперь разберём вариант с использованием цикла while
Пример кода
height = int(input("Введите высоту лесенки: "))
while height > 0:
print('*' * height)
height -= 1
Вывод
Введите высоту лесенки: 5
*****
****
***
**
*
Объяснение кода
- Мы запрашиваем у пользователя высоту лесенки с помощью функции
input()
. - Затем мы используем цикл
while
, чтобы печатать строки лесенки. - На каждой итерации цикла мы печатаем строку, состоящую из символа «*», умноженного на текущее значение переменной
height
. - После печати строки мы уменьшаем значение переменной
height
на 1, чтобы двигаться к вершине лесенки. - Цикл завершается, когда переменная
height
становится равной 0, и лесенка полностью напечатана.
Вывод перевернутой лесенки с использованием цикла for
Для вывода перевернутой лесенки с помощью цикла for
мы можем использовать уже знакомый нам подход с небольшими изменениями.
Пример кода
# Запрос высоты лесенки у пользователя
height = int(input("Введите высоту лесенки: "))
# Цикл для вывода перевернутой лесенки
for i in range(height):
print(" " * i + "*" * (height - i))
Вывод
Введите высоту лесенки: 5
*****
****
***
**
*
Объяснение кода
- Пользователю предлагается ввести высоту лесенки с помощью функции
input
. Высота задается целым числом. - Создается цикл
for
, который проходит от 0 до значения высоты лесенки (исключительно). - На каждой итерации цикла выводится строка, состоящая из пробелов и звездочек. Количество пробелов равно значению текущей итерации
i
, а количество звездочек равно разнице между высотой лесенки и текущим значениемi
. - Таким образом, на каждой строке количество пробелов уменьшается, а количество звездочек увеличивается, создавая эффект перевернутой лесенки.
Вывод перевернутой лесенки с использованием цикла while
Давайте теперь разберём как вывести перевернутую лесенку с помощью цикла while
.
Пример кода
# Запрос высоты лесенки у пользователя
height = int(input("Введите высоту лесенки: "))
# Инициализация переменной для отслеживания текущего ряда
row = 0
# Пока не достигнем конца лесенки, выводим каждый ряд
while row < height:
# Выводим пробелы перед звездочками
print(" " * row, end="")
# Выводим звездочки в убывающем порядке
print("*" * (height - row))
# Переходим к следующему ряду
row += 1
Вывод
Введите высоту лесенки: 5
*****
****
***
**
*
Объяснение кода
height = int(input("Введите высоту лесенки: "))
: Запрашиваем у пользователя высоту лесенки и преобразуем введенное значение в целое число, сохраняем в переменнойheight
.row = 0
: Инициализируем переменнуюrow
для отслеживания текущего ряда, начиная с нуля.while row < height:
: Начинаем циклwhile
, который будет выполняться, пока значение переменнойrow
меньше чемheight
, то есть пока мы не достигнем заданной высоты лесенки.print(" " * row, end="")
: Выводим пробелы перед звездочками. Количество пробелов определяется текущим значениемrow
, что создает эффект увеличивающегося отступа перед каждым рядом звездочек. Используемend=""
, чтобы следующий вывод начинался с той же строки.print("*" * (height - row))
: Выводим звездочки в убывающем порядке относительно высоты лесенки. Звездочка повторяется(height - row)
раз, что обеспечивает уменьшение количества звездочек с каждым следующим рядом.row += 1
: Увеличиваем значение переменнойrow
на единицу для перехода к следующему ряду.- Цикл продолжает выполнение, пока не достигнет указанной пользователем высоты
height
.
Вывод зеркальной лесенки с использованием цикла for
В этом разделе мы рассмотрим использование цикла for
для вывода зеркальной лесенки.
Пример кода
# Запрос высоты лесенки у пользователя
height = int(input("Введите высоту лесенки: "))
# Цикл для вывода зеркальной лесенки
for i in range(height):
print(" " * (height - i - 1) + "*" * (i + 1))
Вывод
Введите высоту лесенки: 5
*
**
***
****
*****
Объяснение кода
- Пользователю предлагается ввести высоту лесенки с помощью функции
input()
. - Высота лесенки сохраняется в переменной
height
после преобразования в целое число с помощьюint()
. - Начинается выполнение цикла
for
, который будет итерироваться от 0 доheight - 1
. - На каждой итерации цикла:
- Сначала вычисляется количество пробелов, которые нужно вывести перед символами
*
. Это количество определяется какheight - i - 1
. Здесьi
— это текущая итерация цикла, поэтому чем большеi
, тем меньше пробелов нужно. - Затем вычисляется количество символов
*
, которые нужно вывести. Оно равноi + 1
, потому что на каждом новом уровне лесенки количество символов увеличивается на единицу. - В результате формируется строка, содержащая нужное количество пробелов и символов
*
.
- Сначала вычисляется количество пробелов, которые нужно вывести перед символами
- Эта строка выводится на экран с помощью функции
print()
.
Вывод зеркальной лесенки с использованием цикла while
Для создания зеркальной лесенки с использованием цикла while
мы можем изменить подход, который мы использовали с циклом for
. Вместо итерации через диапазон чисел мы будем использовать переменную для отслеживания текущего ряда и увеличивать её до тех пор, пока не достигнем желаемой высоты лесенки.
Пример кода
# Запрос высоты лесенки у пользователя
height = int(input("Введите высоту лесенки: "))
# Инициализация переменной для отслеживания текущего ряда
row = 0
# Вывод зеркальной лесенки с использованием цикла while
while row < height:
spaces = height - row - 1
stars = row + 1
print(" " * spaces + "*" * stars)
row += 1
Вывод
Введите высоту лесенки: 5
*
**
***
****
*****
Объяснение кода
- Запрос высоты лесенки у пользователя:
height = int(input("Введите высоту лесенки: "))
запрашивает у пользователя высоту лесенки и преобразует введенное значение в целое число.
- Инициализация переменной для отслеживания текущего ряда:
row = 0
создает переменнуюrow
, которая будет использоваться для отслеживания текущего ряда. В начале она установлена на 0, что соответствует первому ряду.
- Вывод зеркальной лесенки с использованием цикла while:
while row < height:
задает циклwhile
, который будет выполняться, пока переменнаяrow
меньше заданной высотыheight
. Это гарантирует, что мы выведем нужное количество рядов.
- Вычисление количества пробелов и звездочек:
spaces = height - row - 1
определяет количество пробелов в текущем ряду, уменьшая количество пробелов с каждым новым рядом.stars = row + 1
определяет количество звездочек в текущем ряду, увеличивая их количество с каждым новым рядом.
- Вывод строки лесенки:
print(" " * spaces + "*" * stars)
выводит текущий ряд лесенки, состоящий из определенного количества пробелов и звездочек, чтобы создать зеркальный эффект.
- Увеличение значения переменной row:
row += 1
после каждой итерации цикла увеличивает значение переменнойrow
на 1, чтобы перейти к следующему ряду.