Таблица умножения в одну строку
На картинке вы видите обычную таблицу умножения, которая, думаю, всем хорошо знакома.
Ничего особенного в ней нет, кроме того, что весь алгоритм ее построения сжат до одной стандартной Python’овской строки в 79 символов (см. PEP8). Кому интересно добро пожаловать под кат.
Для начала, стоит ответить на появившийся у многих вопрос «А зачем это?». Все сложилось из двух факторов, во-первых я, по настоятельной рекомендации одного хорошего человека, занялся углубленным изучением Python’а, а во-вторых мне нравится концепция демосцены. Результатом стало желание написать (конечно слишком громко сказано) что-нибудь очень маленькое (в идеале в одну строку), но наглядное, используя для всего этого особенности кодинга на Python’е. Я решил вывести на экран таблицу умножения.
Стоит отметить, что пишу я на Python3.7. Версии младше 3.6 не подойдут из-за отсутствия поддержки f-строк, и в итоге рабочий скрипт превысит длину в 79 символов.
Как восемь строк превратились в одну
Для начала я написал код выводящий таблицу умножения, абсолютно не заботясь о компактности:

Листинг
def MultiTabl(): tabl = '' for y in range(1,11): for x in range(1,11): tabl += f'\t' tabl += f'\n' return tabl
Сформировать значения таблицы можно, используя генераторы, а циклы оставить для распаковки списков. Минусом такого подхода оказалось большее количество строк:

Листинг
def MultiTabl(): nums = [[x*y for x in range(1,11)] for y in range(1,11)] tabl = '' for line in nums: for item in line: tabl += f'\t' tabl += f'\n' return tabl
Генератору можно отдать и расстановку Tab’ов (‘\t’) используя f-строки:
nums = [[f'\t' for x in range(1,11)] for y in range(1,11)]
Если извлеченный в первом цикле список склеить в строку, с помощью строкового метода join(), использовать параллельное назначение переменных и разместить цикл в одной строке, то размеры кода значительно уменьшатся:

Листинг
def MultiTabl(): nums, tabl = [[f'\t' for x in range(1,11)] for y in range(1,11)], '' for line in nums: tabl += ''.join(line) + '\n' return tabl
А если внести join() и ‘\n’ в генератор:
def MultiTabl(): nums, tabl = [''.join([f'\t' for x in range(1,11)])+'\n' for y in range(1,11)], '' for line in nums: tabl += line return tabl
Теперь в нашем распоряжении список из строк, и его тоже можно склеить с помощью join(), избавившись тем самым от циклов:
def MultiTabl(): tabl = ''.join([''.join([f'\t' for x in range(1,11)])+'\n' for y in range(1,11)]) return tabl
Ну и обещанный вариант в одну строку (от print, конечно, не избавиться)
print( ''.join([''.join([f'\t' for x in range(1,11)])+'\n' for y in range(1,11)]) )
Конечно, гуру Python’а скажут “И что тут такого?”, но стоит заметить, что указанный подход не является очевидным для начинающих.
Не стоит воспринимать сей опус слишком серьезно, я его писал как разминку перед большой статьей, будет замечательно если он вызовет улыбку, и просто великолепно если принесет пользу.
Как вывести таблицу умножения в python?
нужно чтобы и строки выходили полностью.
Подскажите пожалуйста?
Добавлено через 21 минуту
сорян, вопрос был про Питон
1 2 3 4 5 6 7 8 9
a=1 while a10: b=1 while b10: c=a*b print(c, end=" ") b+=1 print(" ") a+=1
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как вывести на экран таблицу умножения?
program sbb; uses crt; var i,j,s:integer; a:array of integer; begin for i:=1 to 5 do .

Как вывести таблицу умножения на экран
Option Explicit Dim i, j, p As Integer Private Sub table() For i = 1 To 10 .

Вывести таблицу пифагора — таблицу умножения десятичных чисел
задача программы: Вывести таблицу пифагора — таблицу умножения десятичных чисел

Используя два вложенных цикла вывести на экран таблицу Пифагора – таблицу умножения двух целых чисел
Используя два вложенных цикла вывести на экран таблицу Пифагора – таблицу умножения двух целых.
Регистрация: 25.03.2019
Сообщений: 41

Сообщение было отмечено ZhansultanM как решение
Решение
for i in range(1,11): print (' '.join(str(i*v) for v in range(1,11)))
Результат:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
1040 / 575 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1

Сообщение было отмечено ZhansultanM как решение
Решение
1 2 3
s1 = 10 for i in range(1, s1+1): print(*range(i, i*s1+1, i), sep='\t')
1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100
![]()
1354 / 651 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
1 2 3 4 5 6 7 8 9 10
def mult(): for a in [[1, 2, 3], [4, 5, 6], [7, 8, 9]]: if a != 0: print('') for b in range(1, 10): print('%s*%s=%s\t\t\t' % (a[0], b, a[0] * b), '%s*%s=%s\t\t\t' % (a[1], b, a[0] * b), '%s*%s=%s\t\t\t' % (a[2], b, a[0] * b), ) if __name__ == '__main__': mult()
Регистрация: 03.04.2019
Сообщений: 2
1 2 3 4
for i in range(1,11): for j in range(1,11): print((str(i)+'*'+str(j)+'='+str(i*j)).rjust(9),end=' '*3) print()
Регистрация: 26.03.2021
Сообщений: 1
Время прошло много с вопроса, но оставлю это для тех, кого еще будет заботить этот вопрос)
1 2 3 4 5 6 7 8
print('Таблица умножения') for i in range(1, 10): for k in range(2, 10): print(f' * = \t', end='') print('') else: print('It's off')
Получим таблицу, как в тетрадке
Регистрация: 18.05.2021
Сообщений: 93
еще вариант, через def для определенно заданого числа:
1 2 3 4 5
def tabell(): n = 1 for i in range(1,10): print(f' * = ') tabell()
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Вывести таблицу умножения
Написать программу, которая выведет на экран таблицу умножения чисел от 1 до 10 в ввиде: 0 1 2.
Вывести таблицу умножения
Доброго времени суток! Поступило такое вот интересное задание. при помощи цикла do or while.

Вывести таблицу умножения
Нужно вывести таблицу умножения от 1 до 9, что бы первый столбик была таблица 1, следующий 2 и тд.

Вывести таблицу умножения
Составить программу заполнения таблицы умножения. Результат вывести на печать.
Вывести таблицу умножения
Нужно написать скрипт, который выводит таблицу умножения от 1 до 100. Ячейки в таблице должны быть.
Программа, которая выводит таблицу умножения Python
В этом уроке мы обсудим различные способы вывода на печать таблицы умножения любого числа с помощью Python.
Способ 1: Использование цикла For
В следующем примере мы напечатаем таблицу умножения любого числа (от 1 до 10) с помощью цикла for.
number = int(input("Enter the number of which the user wants to print the multiplication table: ")) # We are using "for loop" to iterate the multiplication 10 times print("The Multiplication Table of: ", number) for count in range(1, 11): print(number, 'x', count, '=', number * count)
Enter the number : 10 Enter the number of which the user wants to print the multiplication table: 13 The Multiplication Table of: 13 13 x 1 = 13 13 x 2 = 26 13 x 3 = 39 13 x 4 = 52 13 x 5 = 65 13 x 6 = 78 13 x 7 = 91 13 x 8 = 104 13 x 9 = 117 13 x 10 = 130
В приведенной выше программе мы получили от пользователя входное целое число. Затем мы повторили цикл for, используя функцию диапазона (1, 11), что означает больше или равно 1 и меньше 11. В первой итерации цикл будет повторяться и умножаться на 1 до заданного числа. Во второй итерации 2 умножается на заданное число и так далее.
В нашем случае мы распечатали таблицу из 10. Вы можете указать разные числа для тестирования программы.
Способ 2: с помощью цикла While
В этом методе мы будем использовать цикл while для печати таблицы умножения любого числа, указанного пользователем.
number = int(input ("Enter the number of which the user wants to print the multiplication table: ")) count = 1 # we are using while loop for iterating the multiplication 10 times print ("The Multiplication Table of: ", number) while count
Enter the number of which the user wants to print the multiplication table: 27 The Multiplication Table of: 27 27 x 10 = 27 27 x 10 = 54 27 x 10 = 81 27 x 10 = 108 27 x 10 = 135 27 x 10 = 162 27 x 10 = 189 27 x 10 = 216 27 x 10 = 243 27 x 10 = 270
Приведенный выше код такой же, как и в предыдущей программе, но мы использовали цикл while. Мы объявили переменную “count” и инициализировали ее значением 1. Цикл while будет повторяться до тех пор, пока значение “count” не станет равным 10. При каждом повторении временного цикла значение “count” будет увеличиваться на 1. Когда “количество” станет больше 10, цикл будет завершен.
В этом руководстве мы обсудили два различных метода, которые можно использовать для печати таблицы умножения с помощью Python.
Таблица умножения в python

Помогоите сделать таблицу умножения в python. Таблица вида: При вводе 5 Пытаюсь сделать двойной цикл: 1)Для строки 2)Для столбца Вот до чего я пока додумался. (Начинающий)
s1=int(input()) for i in range(s1): print(i+1,end='\t') for g in range(i): print((g+1)*i) break
1 2 1 3 2 4 3 5 4
Буду очень благодарен любой помощи!
Отслеживать
vojdelenije
задан 4 янв 2018 в 15:26
vojdelenije vojdelenije
147 2 2 золотых знака 2 2 серебряных знака 13 13 бронзовых знаков
range в вашем случае первым числом всегда возвращает ноль, вот оттуда ноль в переменных i и g и берётся
4 янв 2018 в 15:36
Почему он возвращает ноль, если в print я написал i+1 ?
4 янв 2018 в 15:37
а в print(g*i) - не написано +1
4 янв 2018 в 15:39
Ааа, точно! Но первая строка всё равно не выводит все пять чисел
4 янв 2018 в 15:40
После вашей правки фраза «Не понимаю откуда берутся нули» стала бессмысленной
4 янв 2018 в 16:00
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
for i in range(1, s1+1): print(*range(i, i*s1+1, i), sep='\t')
1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25
или "простой" вариант:
for i in range(1, s1+1): for j in range(i, i*s1+1, i): print(j, end='\t') print()
1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25
