Practical Programming
An Introduction to Computer Science
Using Python 3
(Pragmatic Programmers)
(Pragmatic Bookshelf)
Paul Gries (著) Jennifer Campbell (著)
Jason Montojo (著) Lynn Beighley (編集)
開発環境
- OS X Yosemite - Apple (OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python 3.4 (プログラミング言語)
Practical Programming: An Introduction to Computer Science Using Python 3 (Pragmatic Programmers) (Paul Gries (著)、Jennifer Campbell (著)、Jason Montojo (著)、Lynn Beighley (編集)、Pragmatic Bookshelf)のChapter 15(Testing and Debugging)、15.7(Exercises) 3.を解いてみる。
15.7(Exercises) 3.
コード(BBEdit)
TestAllPrefixes.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import unittest
def allPrefixes(s):
if s == '':
return set()
first_char = s[0]
sub_strs = set()
for i in range(len(s)):
for j in range(i + 1, len(s) + 1):
sub_str = s[i:j]
if sub_str[0] == first_char and sub_str != '':
sub_strs.add(sub_str)
return sub_strs
class TestAllPrefixes(unittest.TestCase):
def test_empty(self):
s = ''
expected = set()
actual = allPrefixes(s)
self.assertEqual(expected, actual)
def test_char(self):
s = 'l'
expected = {'l'}
actual = allPrefixes(s)
self.assertEqual(expected, actual)
def test_normal(self):
s = 'lead'
expected = {'l', 'le', 'lea', 'lead'}
actual = allPrefixes(s)
self.assertEqual(expected, actual)
def test_deplicated(self):
s = 'abaacd'
expected = {'a', 'ab', 'aba', 'abaa', 'abaac', 'abaacd',
'aa', 'aac', 'aacd', 'ac', 'acd'}
actual = allPrefixes(s)
self.assertEqual(expected, actual)
if __name__ == '__main__':
unittest.main()
入出力結果(Terminal, IPython)
$ ./TestAllPrefixes.py .... ---------------------------------------------------------------------- Ran 4 tests in 0.002s OK $
0 コメント:
コメントを投稿