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