Ребята в детском саду учатся считать, и чтобы им было интереснее, воспитательница решила оформить список изучаемых чисел особым образом.
Дети справляются весьма быстро, поэтому ей требуется программа способная строить числовые прямоугольники. Напишите программу, которая строит числовой прямоугольник требуемого размера.
Формат ввода
В первой строке записано число N — высота числового прямоугольника.
Во второй строке указано число M — ширина числового прямоугольника.
Формат вывода:
Нужно вывести сформированный числовой прямоугольник требуемого размера.
Чтобы прямоугольник был красивым, каждый его столбец должен быть одинаковой ширины.
Пример
Ввод
2
3Вывод
1 2 3
4 5 6Ввод
4
6Вывод
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24Решение
Существует два способа решения этой задачи.
Наивный заключается в том, чтобы построить зависимость числа от его местоположения в квадрате.
Но по сути, это облегченный вариант задачи C. Новогоднее настроение. Облегченный потому, что нам опять надо выводить числа, только в этот раз размер ряда всегда один и тот же.
Ниже представлены два оба варианта решения задачи.
Посмотреть код
Решение
# Наивный метод
height = int(input())
width = int(input())
cell_width = len(str(height * width))
for i in range(1, height + 1):
for j in range(width * (i - 1) + 1, width * i + 1):
print(f'{j:>{cell_width}}', end=' ')
if j == width * i:
print()Решение
height = int(input())
width = int(input())
cell_width = len(str(width * height))
number = 1
for _ in range(height):
for _ in range(width):
print(f'{number:>{cell_width}}', end=' ')
number += 1
print()
ch=int(input()) ch2=int(input()) for i in range(1,ch2*ch+1): if i%ch2!=0: print(i,end=' ') else: print(i,sep=' ')Спасибо за ваш вариант кода для решения этой задачки. Я мыслил так же, но не мог написать рабочий код), ваш комментарий помог мне разобраться). Но, ваш код будет работать корректно в следующем виде:
ch = int(input()) ch2 = int(input()) cell_width = len(str(ch2 * ch)) for i in range(1, ch2 * ch + 1): if i % ch2 !=0: print(f'{i:>{cell_width}}', end=' ') else: print(f'{i:>{cell_width}}')В первом варианте решения задачи можно обойтись без if, оставив только print(), но для этого необходимо print() переместить из вложенного цикла for в основной цикл for.
Оставляю свой вариант решения этой задачки, основанный на информации с подсказки от яндекса. Но я его чуть чуть изменил для логического понимания:
num_row = int(input()) num_column = int(input()) max_num = num_row * num_column cell_width = 0 while max_num != 0: cell_width += 1 max_num //= 10 for row in range(1, num_row + 1): for column in range(1, num_column + 1): num = column + (row - 1) * num_column print(f'{num:>{cell_width}}', end=' ') print()