0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Python] 九九表の作成

Posted at

九九表を作成する その1

最初はfor文の二重ループを使って九九表を作成しました。
Python3.6から導入されたf文字列を使用して桁が揃うように出力されるようにしました。

kuku_1.py
for i in range(1, 10):
    for j in range(1, 10):
        print(f'{i * j:4d}', end="") # 4桁の幅で出力されるよう指定
    print("\n", end="")

# 実行結果
   1   2   3   4   5   6   7   8   9
   2   4   6   8  10  12  14  16  18
   3   6   9  12  15  18  21  24  27
   4   8  12  16  20  24  28  32  36
   5  10  15  20  25  30  35  40  45
   6  12  18  24  30  36  42  48  54
   7  14  21  28  35  42  49  56  63
   8  16  24  32  40  48  56  64  72
   9  18  27  36  45  54  63  72  81

九九表を作成する その2

その1と基本的には同じですが、出力の部分で書式化演算子「%」を使っています。
CやJavaなど他のプログラミング言語に慣れている方にはお馴染みな書き方だと思います。

kuku_2.py
for i in range(1, 10):
    for j in range(1, 10):
        print('%2d' %(i * j) , end=' ') # 書式化演算子「%」を使用
    print()
# 実行結果はその1と同じです

itertoolsを使う

itertools.product()を使って複数のリストの直積(デカルト積)を生成することで、forの入れ子による多重ループよりも簡潔にコードを書くことができます。

kuku_3.py
from itertools import product
for i, j in product(range(1, 10), range(1, 10)):
    print(f'{i} * {j} = {i * j}')
# 実行結果
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81

NumPyのブロードキャストを利用する

NumPyのブロードキャスト(形状の自動変換)を上手く使えば配列の掛け算一回で九九表が作成できます。ちなみに私はNumPyを初めたころ、配列の公差を指定するarangeをarrangeだと勘違いしていました(笑)

kuku_brdcast.py
import numpy as np
row = np.arange(1, 10).reshape(1, -1) #[[1, 2, 3, 4, 5, 6, 7, 8, 9]]
column = np.arange(1, 10).reshape(-1, 1) #[[1], [2], [3], [4], [5], [6], [7], [8], [9]]
kuku = row * column
print(kuku)
# 実行結果
[[ 1  2  3  4  5  6  7  8  9]
 [ 2  4  6  8 10 12 14 16 18]
 [ 3  6  9 12 15 18 21 24 27]
 [ 4  8 12 16 20 24 28 32 36]
 [ 5 10 15 20 25 30 35 40 45]
 [ 6 12 18 24 30 36 42 48 54]
 [ 7 14 21 28 35 42 49 56 63]
 [ 8 16 24 32 40 48 56 64 72]
 [ 9 18 27 36 45 54 63 72 81]]
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?