## 2019年9月6日金曜日

### Python - Making Choices - if statement, else statement, Boolean Operators

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

コード

Python 3

```#!/usr/bin/env python3
from unittest import TestCase, main
from test.support import captured_stdout

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

def tearDown(self):
pass

def test_a(self):
populations = [9999999, 10000000]
with captured_stdout() as stdout:
for population in populations:
if population < 10000000:
print(population)
self.assertEqual(stdout.getvalue(), '9999999\n')

def test_b(self):
populations = [9999999, 10000000, 35000000, 35000001]
with captured_stdout() as stdout:
for population in populations:
if 10000000 <= population <= 35000000:
print(population)
s = '''10000000
35000000
'''
self.assertEqual(stdout.getvalue(), s)

def test_c(self):
population = 10000
areas = [1, 10, 100, 1000]
with captured_stdout() as stdout:
for area in areas:
if population / area > 100:
# print('Densely populated')
print(area)
s = '''1
10
'''
self.assertEqual(stdout.getvalue(), s)

def test_d(self):
population = 10000
areas = [1, 10, 100, 1000]
with captured_stdout() as stdout:
for area in areas:
if population / area > 100:
print('Densely populated')
else:
print('Sparsely populated')
s = '''Densely populated
Densely populated
Sparsely populated
Sparsely populated
'''
self.assertEqual(stdout.getvalue(), s)

if __name__ == '__main__':
main()
```

```\$ ./sample7.py -v
test_a (__main__.MyTestCase) ... ok
test_b (__main__.MyTestCase) ... ok
test_c (__main__.MyTestCase) ... ok
test_d (__main__.MyTestCase) ... ok

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

OK
\$
```