2017年1月15日日曜日

開発環境

行列プログラマー(Philip N. Klein (著)、 松田 晃一 (翻訳)、 弓林 司 (翻訳)、 脇本 佑紀 (翻訳)、 中田 洋 (翻訳)、 齋藤 大吾 (翻訳)、オライリージャパン)の0章(関数(とその他の数学とコンピュータに関する予備知識))、0.8(問題)、Python の内包表記に関する問題0.8.1、0.8.2を取り組んでみる。

課題 0.6.6、0.6.7、0.6.8

コード(Emacs)

Unit Test

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import unittest
from sample8_1 import *


class SampleTest(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_tuple_sum(self):
        res = tuple_sum([(1, 2), (10, 20)], [(3, 4), (30, 40)])
        self.assertEqual(res, [(4, 6), (40, 60)])

    def test_inv_dict(self):
        res = inv_dict({'thank you': 'merci', 'goodbye': 'au revoir'})
        self.assertEqual(res, {'merci': 'thank you', 'au revoir': 'goodbye'})

    def test_row(self):
        res = row(10, 4)
        self.assertEqual(res, [10, 11, 12, 13])

    def test_row_15_20(self):
        res = [row(i, 20) for i in range(15)]
        self.assertEqual(res, [[i + j for j in range(20)] for i in range(15)])

if __name__ == '__main__':
    unittest.main()
#!/usr/bin/env python3
# -*- coding: utf-8 -*-


def tuple_sum(a, b):
    return [(x + b[i][0], y + b[i][1]) for i, (x, y) in enumerate(a)]


def inv_dict(d):
    return {v: k for k, v in d.items()}


def row(p, n):
    return [p + i for i in range(n)]

入出力結果(Terminal, IPython)

$ ./test8_1.py -v
test_inv_dict (__main__.SampleTest) ... ok
test_row (__main__.SampleTest) ... ok
test_row_15_20 (__main__.SampleTest) ... ok
test_tuple_sum (__main__.SampleTest) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.004s

OK
$

0 コメント:

コメントを投稿