開発環境
- 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 コメント:
コメントを投稿