## 2019年9月5日木曜日

### Python - Making Choices - A Boolean Type, Boolean Operators(and, not, or), exclusive, absolute value, difference

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()
```

```\$ ./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
\$
```