ソースコード
#!/usr/bin/python # coding: UTF-8 import random def make_randint_list(min, max, cnt, sortflag=False, revflag=False): """ 重複のない乱数(整数min以上max以下)を要素としたリストを返す """ list = [] i = 0 while cnt != i: r = random.randint(min, max) try: list.index(r) # 既にリストに存在するか except ValueError, e: list.append(r) # 無い場合はリストに格納 i = i + 1 if (sortflag): list.sort(reverse=revflag) return list def _main(): """モジュールのチェック関数""" print 'makerand0.py [_main()]' print make_randint_list(10, 99, 10) print make_randint_list(10, 99, 10, True) # 昇順ソート print make_randint_list(10, 99, 10, True, True) # 降順ソート if __name__ == '__main__' : _main() #
モジュール変数__name__の中には通常はモジュール名が入っています。しかし、このモジュールファイルを直接実行した場合は__name__に’__main__’という名前が入ります。その為、if __name__ == ‘__main__’ : は真となり_main()が実行されます。
実行結果
$ python makerand0.py makerand0.py [_main()] [62, 18, 55, 44, 97, 67, 87, 16, 59, 43] [11, 13, 30, 42, 46, 52, 71, 75, 81, 92] [88, 81, 65, 60, 57, 53, 41, 34, 27, 23]
モジュールテスト用スクリプト
makerand0_test.py
#!/usr/bin/python # coding: UTF-8 from makerand import make_randint_list print make_randint_list(10, 99, 10) print make_randint_list(10, 99, 10, True) print make_randint_list(10, 99, 10, True, True)
実行結果
$ python makerand0_test.py [52, 44, 63, 61, 50, 66, 88, 45, 99, 57] [15, 26, 29, 53, 56, 69, 89, 91, 94, 95] [96, 95, 93, 88, 79, 75, 64, 62, 33, 11]