LoginSignup
5
5

More than 5 years have passed since last update.

Pythonで九九を出力するワンライナー

Posted at

ワンライナー

$ python -c "print '\n'.join([''.join(['%3d'%(i*j) for i in range(1,10)]) for j in range(1,10)])"

(自分のための) 解説

$ python -c "" はコマンドラインから直接pythonのプログラムを実行するためのお作法

[]のところはPythonでいう内包表記。ループを簡単に書けるっぽい。 print[i*j for i in range(1,10) for j in range(1,10)] を実行すると、

[1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, ...中略...36, 45, 54, 63, 72, 81]

と九九の計算結果が丸々表示される。

コレを適宜改行させるために、まず join関数で計算結果を一段毎に一つの文字列にしてしまう

print [''.join(['%3d'%(i*j) for i in range(1,10)]) for j in range(1,10)]

['  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']

あとはこれを一段ごとに改行するためにさらにjoin関数で挟むと出来上がり。

print '\n'.join([''.join(['%3d'%(i*j) for i in range(1,10)]) for j in range(1,10)])

出力結果

  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
5
5
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
5
5