Вопрос задан 23.10.2026 в 17:39. Предмет Информатика. Спрашивает Пилип Мирка.

Язык программирования — Python.
Вася решил познать азы ASCII-живописи и, как все начинающие художники, начал с рисования простых фигур. Напишите программу построения прямоугольника n × m, состоящего из символов symb. Фигура должна быть пустой, а не заполненной. То есть она должна состоять только из контура.

Для справки, алгоритм с закрашенным прямоугольником:

x = int(input())
y = int(input())
z = input()
for i in range(x):
print(z, end='')
for j in range(1, y):
print(z, end='')
print(' ')

Перейти к ответам

Ответы на вопрос

Отвечает Моргенштерн Лиза.

Для того чтобы нарисовать пустой прямоугольник размером n × m из символов symb, нужно вывести символы только по границам прямоугольника, а внутри оставить пробелы.

Для этого можно использовать вложенные циклы и условный оператор if.

Решение на Python

Python
n = int(input())
m = int(input())
symb = input()

for i in range(n):
for j in range(m):
if i == 0 or i == n - 1 or j == 0 or j == m - 1:
print(symb, end='')
else:
print(' ', end='')
print()

Как работает программа?

  1. n = int(input()) — вводим высоту прямоугольника (количество строк).

  2. m = int(input()) — вводим ширину прямоугольника (количество символов в строке).

  3. symb = input() — вводим символ, из которого будем рисовать прямоугольник.

  4. for i in range(n) — внешний цикл отвечает за строки.

  5. for j in range(m) — внутренний цикл отвечает за символы в каждой строке.

  6. Условие if проверяет, находится ли текущая позиция на границе прямоугольника:

    • i == 0 — первая строка.

    • i == n - 1 — последняя строка.

    • j == 0 — первый столбец.

    • j == m - 1 — последний столбец.

  7. Если позиция находится на границе, выводим symb. Иначе выводим пробел.

  8. print() после внутреннего цикла переводит курсор на новую строку.

Пример работы

Ввод:

Обычный текст
5 8 *

Вывод:

Обычный текст
******** * * * * * * ********

Более короткий вариант решения

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

Python
n = int(input())
m = int(input())
symb = input()

for i in range(n):
if i == 0 or i == n - 1:
print(symb * m)
else:
print(symb + ' ' * (m - 2) + symb)

Здесь первая и последняя строки полностью состоят из символов symb, а остальные строки содержат символ в начале, m - 2 пробелов посередине и символ в конце.

Оба решения правильно строят пустой прямоугольник. Первый вариант лучше подходит для изучения вложенных циклов и условий, а второй короче и проще. При ширине m = 1 лучше использовать первый вариант, так как второй выведет по два символа в промежуточных строках.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос