2017年1月8日日曜日

開発環境

行列プログラマー(Philip N. Klein (著)、 松田 晃一 (翻訳)、 弓林 司 (翻訳)、 脇本 佑紀 (翻訳)、 中田 洋 (翻訳)、 齋藤 大吾 (翻訳)、オライリージャパン)の0章(関数(とその他の数学とコンピュータに関する予備知識))、0.5(ラボ: Python 入門 - 集合、リスト、辞書、内包表記)、0.5.9(1行プロシージャを定義する)、インデックス指定、要素のテスト、課題 0.5.27、0.5.28、0.5.29、0.5.30、0.5.31、0.5.32を取り組んでみる。

課題 0.5.27、0.5.28、0.5.29、0.5.30、0.5.31、0.5.32

コード(Emacs)

Unit Test

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

import unittest
from sample27 import *


class TestTwice(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_string_empty(self):
        result = twice('')
        self.assertEqual(result, '')

    def test_string(self):
        result = twice('a')
        self.assertEqual(result, 'aa')

    def test_list_empty(self):
        result = twice([])
        self.assertEqual(result, [])

    def test_list(self):
        result = twice([1])
        self.assertEqual(result, [1, 1])

    def test_name_error(self):
        self.assertRaises(NameError, f)


class TestNextInts(unittest.TestCase):

    def setup(self):
        pass

    def tearDown(self):
        pass

    def test_empty(self):
        self.assertEqual(nextInts([]), [])

    def test_list(self):
        self.assertEqual(nextInts([1, 5, 7]), [2, 6, 8])


class TestCubes(unittest.TestCase):

    def setup(self):
        pass

    def tearDown(self):
        pass

    def test_empty(self):
        self.assertEqual(cubes([]), [])

    def test_list(self):
        self.assertEqual(cubes([1, 2, 3]), [1, 8, 27])


class TestDict2List(unittest.TestCase):

    def setup(self):
        pass

    def tearDown(self):
        pass

    def test_empty(self):
        self.assertEqual(dict2list({}, []), [])

    def test_dict1(self):
        self.assertEqual(dict2list(dict(a='A', b='B', c='C'), ['b', 'c', 'a']),
                         ['B', 'C', 'A'])


class TestList2Dict(unittest.TestCase):

    def setup(self):
        pass

    def tearDown(self):
        pass

    def test_empty(self):
        self.assertEqual(list2dict([], []), {})

    def test_dict1(self):
        self.assertEqual(list2dict(['A', 'B', 'C'], ['a', 'b', 'c']),
                         dict(a='A', b='B', c='C'))


class TestAll3DigitNumbers(unittest.TestCase):

    def setup(self):
        pass

    def tearDown(self):
        pass

    def test_2(self):
        self.assertEqual(all_3_digit_numbers(2, {0, 1}),
                         {0, 1, 2, 3, 4, 5, 6, 7})

    def test_3(self):
        self.assertEqual(all_3_digit_numbers(3, {0, 1, 2}),
                         set(range(27)))

    def test_10(self):
        self.assertEqual(all_3_digit_numbers(10, set(range(10))),
                         set(range(1000)))

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

# 5.27


def twice(z): return 2 * z


def f():
    return z

# 5.28


def nextInts(l): return [x + 1 for x in l]

# 5.29


def cubes(l): return [x ** 3 for x in l]

# 5.30


def dict2list(d, key_list): return [d[k] for k in key_list]


# 5.31
def list2dict(l, key_list): return {v: l[i] for i, v in enumerate(key_list)}


# 5.32
def all_3_digit_numbers(base, digits):
    return {i * (base ** 2) + j * (base ** 1) + k * (base ** 0)
            for i in digits
            for j in digits
            for k in digits}

入出力結果(Terminal, IPython)

$ ./test27.py
................
----------------------------------------------------------------------
Ran 16 tests in 0.010s

OK
$

0 コメント:

コメントを投稿