Python задачка по выводу таблицы умножения
Мучаюсь с задачей на Stepik. Нужно что бы программа выводила часть таблицы именно так как в задаче.
Логика кода у меня вроде правильная все работает на разных значениях.
Не могу с отступами сделать "\t" и end=""
Пример:
| 2 | 3 | 4 | |
|---|---|---|---|
| 1 | 2 | 3 | 4 |
| 2 | 4 | 6 | 8 |
| 3 | 6 | 9 | 12 |
Мой код:
a = int(1)
b = int(3)
c = int(2)
d = int(4)
for i in range(c,d + 1):
for j in range(a,b + 1):
print(i,end='*')
print(j,end='=')
print(i * j)
Буду рад за развернутый ответ.
Ответы (2 шт):
В каком смысле "не можете"? Просто идёте по строчкам, а в строчках по колонкам - и делаете. Всё, что понадобится - это end='\t'. А циклы надо поменять местами, потому что внешний должен быть по строкам, а внутренний по столбцам. Ну и верхний заголовок лучше отдельно выводить (хотя есть варианты):
a = int(1)
b = int(3)
c = int(2)
d = int(4)
# верхний заголовок
print(end='\t')
for i in range(c,d + 1):
print(i, end='\t')
print()
# таблица
for j in range(a,b + 1):
# левый заголовок
print(j, end='\t')
# основная часть
for i in range(c,d + 1):
print(i * j, end='\t')
print()
На выходе:
2 3 4
1 2 3 4
2 4 6 8
3 6 9 12
Например так:
row = 2, 3, 4 # кортеж вместо range()
col = 1, 2, 3
print(" ", end="") # пропуск 3 позиций в заголовке
for n in row:
print(f"{n:3}", end="")
print()
for m in col:
print(f"{m:3}", end="") # сначала заголовок строки произведений
for n in row:
print(f"{m*n:3}", end="") # отдельные произведения
print()
Результат:
2 3 4 1 2 3 4 2 4 6 8 3 6 9 12
Объяснение:
Шаблон один и тот же:
Для вывода всякого числа используем f-string с резервированием 3 позиций (
:3):- одной как сепаратора (т.к. числа сравниваются вправо),
- двух для самого числа.
Всякое число выводим функцией
print()с параметромend="", чтобы остаться в той-же строке.После заполнения каждой строки применим
print()для перехода к новой.
Замечание:
Так как f-string доступен только в версиях Питона 3.6+, для предыдущих версии надо вместо него применить метод .format().
Например вместо
f"{m*n:3}"
используйте
"{:3}".format(m*n)