Как сделать таблицу умножения в python
Перейти к содержимому

Как сделать таблицу умножения в python

  • автор:

таблица умножения Python

В следующем примере показано, как реализовать таблицу умножения:

# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.w3big.com # 九九乘法表 for i in range(1, 10): for j in range(1, i+1): print('<>x<>=<>\t'.format(i, j, i*j), end='') print()

Выполните приведенные выше результаты вывода кода:

1x1=1 2x1=2 2x2=4 3x1=3 3x2=6 3x3=9 4x1=4 4x2=8 4x3=12 4x4=16 5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81

Значение, указанное конечным параметром, выход может быть отменен в конце возврат каретки, перевод строки не понимает.

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Таблица умножения при помощи двух циклов, не больше. Как сделать её в таком виде, как на тетрадке, обороте?

#1 Май 24, 2014 20:49:25

ingfa_1981 Зарегистрирован: 2014-01-25 Сообщения: 200 Репутация: 1 Профиль Адрес электронной почты

Таблица умножения при помощи двух циклов, не больше. Как сделать её в таком виде, как на тетрадке, обороте?

from itertools import product for i, j in product(range(0,11), range(0,11)): print i,"*", j, " =", i*j 

Отредактировано ingfa_1981 (Май 24, 2014 20:49:40)

#2 Май 25, 2014 16:16:57

dimy44 От: Евпатория Зарегистрирован: 2012-04-21 Сообщения: 463 Репутация: 42 Профиль

Таблица умножения при помощи двух циклов, не больше. Как сделать её в таком виде, как на тетрадке, обороте?

Ниче не пойму, че тут развели, ведь просто все ж

for x in range(1, 10): for y in range(1, 10): print(' x = '.format(x, y, x*y)) # или: print('\n'.join([' x = '.format(x, y, x*y) for x in range(1, 10) for y in range(1, 10)])) 

#3 Май 25, 2014 16:51:48

ajib6ept От: От: От: От: От: От: От: От: Зарегистрирован: 2013-08-04 Сообщения: 297 Репутация: 26 Профиль Отправить e-mail

Таблица умножения при помощи двух циклов, не больше. Как сделать её в таком виде, как на тетрадке, обороте?

dimy44
Ниче не пойму, че тут развели, ведь просто все ж

Надо в три столбика — этот вариант вывод в один

_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don’t let PEP 8 make you insanely intolerant of other people’s code.

Программа, которая выводит таблицу умножения 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’овской строки в 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’а скажут “И что тут такого?”, но стоит заметить, что указанный подход не является очевидным для начинающих.

Не стоит воспринимать сей опус слишком серьезно, я его писал как разминку перед большой статьей, будет замечательно если он вызовет улыбку, и просто великолепно если принесет пользу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *