2019年9月5日木曜日

開発環境

Practical Programming: An Introduction to Computer Science Using Python 3.6 (Paul Gries(著)、Jennifer Campbell(著)、Jason Montojo(著)、Pragmatic Bookshelf)のChapter 5(Making Choices)、Exercises 3、4、5、6の解答を求めてみる。

コード

Python 3

#!/usr/bin/env python3
from unittest import TestCase, main


class MyTestCase(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test3(self):
        def f(full, empty):
            return (full and not empty) or (not full and empty)
        self.assertFalse(f(True, True))
        self.assertTrue(f(True, False))
        self.assertTrue(f(False, True))
        self.assertFalse(f(False, False))

    def test4(self):
        # right
        def f(light, temperature):
            return ((light < 0.01) or (temperature > 0.0)) and \
                (not ((light < 0.01) and (temperature > 0.0)))

        def g(light, temperature):
            return (light < 0.01) != (temperature > 0.0)

        for light in [0.0, 0.01]:
            for temperature in [0.1, 0.0]:
                self.assertEqual(f(light, temperature), g(light, temperature))

    def test5(self):
        def f(x):
            x == abs(x)
            return x == abs(x)
        self.assertTrue(f(1))
        self.assertFalse(f(-1))

    def test6(self):
        def different(a, b):
            return a != b
        self.assertTrue(different(1, 2))
        self.assertFalse(different(1, 1))


if __name__ == '__main__':
    main()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

$ ./sample3.py -v
test3 (__main__.MyTestCase) ... ok
test4 (__main__.MyTestCase) ... ok
test5 (__main__.MyTestCase) ... ok
test6 (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.000s

OK
$ 

0 コメント:

コメントを投稿