開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
行列プログラマー(Philip N. Klein (著)、 松田 晃一 (翻訳)、 弓林 司 (翻訳)、 脇本 佑紀 (翻訳)、 中田 洋 (翻訳)、 齋藤 大吾 (翻訳)、オライリージャパン)の1章(体)、1.7(問題)、Python のループに関する問題、問題1.7.4、1.7.5、1.7.6、1.7.7、1.7.8、1.7.9を取り組んでみる。
問題1.7.4、1.7.5、1.7.6、1.7.7、1.7.8、1.7.9
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 1.7.4
def mySum(l):
current = 0
for x in l:
current += x
return current
# 1.7.5
def myProduct(l):
current = 1
for x in l:
current *= x
return current
# 1.7.6
def myMin(l):
current = None
for x in l:
if current is None:
current = x
elif x < current:
current = x
return current
# 1.7.7
def myConcat(l):
current = ''
for x in l:
current += x
return current
# 1.7.8
def myUnion(l):
current = set()
for x in l:
current |= x
return current
# 1.7.9
import unittest
class Test(unittest.TestCase):
def setUp(self):
self.l0 = []
self.l1 = [1]
self.l10 = list(range(1, 11))
def tearDown(self):
pass
def test_mySum0(self):
self.assertEqual(mySum(self.l0), 0)
def test_mySum1(self):
self.assertEqual(mySum(self.l1), 1)
def test_mySum10(self):
self.assertEqual(mySum(self.l10), 55)
def test_myProduct0(self):
self.assertEqual(myProduct(self.l0), 1)
def test_myProduct1(self):
self.assertEqual(myProduct(self.l1), 1)
def test_myProduct10(self):
self.assertEqual(myProduct(self.l10), 3628800)
def test_myMin0(self):
self.assertEqual(myMin(self.l0), None)
def test_myMin1(self):
self.assertEqual(myMin(self.l1), 1)
def test_myMin10(self):
self.assertEqual(myMin(self.l10), 1)
def test_myConcat0(self):
self.assertEqual(myConcat([]), '')
def test_myConcat1(self):
self.assertEqual(myConcat(['python']), 'python')
def test_myConcat2(self):
self.assertEqual(myConcat(['python', 'scheme']), 'pythonscheme')
def test_myUnion0(self):
self.assertEqual(myUnion([]), set())
def test_myUnion1(self):
self.assertEqual(myUnion([{1}]), {1})
def test_myUnion2(self):
self.assertEqual(myUnion([set(range(5)), set(range(2, 10))]),
set(range(10)))
if __name__ == '__main__':
unittest.main()
入出力結果(Terminal, IPython)
$ ./sample7_4.py -v test_myConcat0 (__main__.Test) ... ok test_myConcat1 (__main__.Test) ... ok test_myConcat2 (__main__.Test) ... ok test_myMin0 (__main__.Test) ... ok test_myMin1 (__main__.Test) ... ok test_myMin10 (__main__.Test) ... ok test_myProduct0 (__main__.Test) ... ok test_myProduct1 (__main__.Test) ... ok test_myProduct10 (__main__.Test) ... ok test_mySum0 (__main__.Test) ... ok test_mySum1 (__main__.Test) ... ok test_mySum10 (__main__.Test) ... ok test_myUnion0 (__main__.Test) ... ok test_myUnion1 (__main__.Test) ... ok test_myUnion2 (__main__.Test) ... ok ---------------------------------------------------------------------- Ran 15 tests in 0.001s OK $
0 コメント:
コメントを投稿