python でロト6の番号を選ぶ

python で何ができるのか、という疑問が多いようなので、今回は、python でロト 6 の番号を選んでみようと思います。(まあ、クイックピックを選べばいいのですが。)

ロト6のルールは以下のとおりで、1-43の数字から異なる6個の数字を選びます。
http://www.mizuhobank.co.jp/takarakuji/suji/loto6/index.html

使い方を学ぶため、対話型でやってみましょう。
まず、python を起動してください。

Python 2.7.2 (default, Oct 11 2012, 20:14:37)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>>

のようになりますね。(ちょっとバージョン古いですが)

ライブラリリファレンスを眺めて、random というモジュールがあるので、それを使えばよさそうです。

おおまかな流れとしては、1-43 のリストを作って、ramdom.sample という関数で選べそうです。

>>> range(43)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]

となりますね。0 から 43 – 1 のリストが返ります。
それぞれ、1ずつ足したいので、
>>> [i + 1 for i in range(43)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43]
とすればよさそうです。
さて、6個の数字を選んでみましょう。
>>> random.sample([i + 1 for i in range(43)], 6)
[42, 27, 36, 31, 7, 21]
これだとマークシートに書く時にめんどうなので並べかえます。
>>> l2 = _
で一旦別のリストに入れておきます。対話型の時は、_ に直前の結果が入っていて便利です。
>>> l2
[22, 3, 32, 39, 4, 43]
並べかえます。
>>> l2.sort()
>>> l2
[3, 4, 22, 32, 39, 43]

>>> print(l2)
[3, 4, 22, 32, 39, 43]

これを毎回やるのは面倒なので、スクリプトにしましょう。
メモ帳でも vim でも何でも良いので、以下のようなファイルを作ります。

# coding: utf-8
# ロト6 あたりますように
import random

numbers = [ i + 1 for i in range(43)]
luckey_numbers = random.sample(numbers, 6)
luckey_numbers.sort()
print(luckey_numbers)

これを loto6.py として保存します。

python loto6.py

楽しくないですか?

私が python がいいなと思う理由は、この対話型の機能です。
ライブラリの使い方を試してみるのにとても便利だと思います。

次回は、これを WEB アプリにしてみようかなと思います。

# ですが、別に、python にこだわる必要はありません。
# 何か言語を習得しようと思ったら、とにかく、その言語で書いてみるというのが大切かなと思います。
# 一つ完璧にマスターすれば、他の言語も似たようなものですよね。