開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
Head First はじめてのプログラミング ―頭とからだで覚えるPythonプログラミング入門 (Eric Freeman(著)、嶋田 健志(監修)、木下 哲也(翻訳)、株式会社オライリー・ジャパン)を12章(オブジェクト指向プログラミング - オブジェクト村への旅)のエクササイズ(540ページ)の解答を求めてみる。
コード
Python 3
#!/usr/bin/env python3 from unittest import TestCase, main from typing import List class PalindromeStringTest(TestCase): def setUp(self): pass def tearDown(self): pass def test_is_palindrome(self): words = [PalindromeString('radar'), PalindromeString('rader')] lengths = [5, 5] uppercases = ['RADAR', 'RADER'] blns = [True, False] for word, length, uppercase, bln in zip(words, lengths, uppercases, blns): self.assertEqual(len(word), length) self.assertEqual(word.upper(), uppercase) self.assertEqual(word.is_palindrome(), bln) class PalindromeString(str): def is_palindrome(self) -> bool: i = 0 j = len(self) - 1 while i < j: if self[i] != self[j]: return False i += 1 j -= 1 return True if __name__ == '__main__': main()
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))
$ ./sample3.py E ====================================================================== ERROR: test_is_palindrome (__main__.PalindromeStringTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "./sample3.py", line 14, in test_is_palindrome words = [PalindromeString('radar'), NameError: name 'PalindromeString' is not defined ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (errors=1) $ ./sample3.py F ====================================================================== FAIL: test_is_palindrome (__main__.PalindromeStringTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "./sample3.py", line 25, in test_is_palindrome self.assertEqual(word.is_palindrome, bln) AssertionError: <bound method PalindromeString.is_palindrome of 'radar'> != True ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (failures=1) $ ./sample3.py . ---------------------------------------------------------------------- Ran 1 test in 0.000s OK $
0 コメント:
コメントを投稿