開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第I部(Pythonプログラミングの基礎)、5章(辞書とデータ構造)、5.6(演習プロジェクト)、5.6.2(ファンタジーゲームの持ち物リスト用にリストから辞書に移す関数)の解答を求めてみる。
コード
Python 3
sample2_test.py
#!/usr/bin/env python3 from unittest import TestCase, main from test import support from sample1 import display_inventory from sample2 import add_to_inventory class MyTestCase(TestCase): def setUp(self): pass def tearDown(self): pass def test_display_inventory_output(self): stuff = {'ロープ': 1, 'たいまつ': 6, '金貨': 42, '手裏剣': 1, '矢': 12} expected = '''持ち物リスト: 1 ロープ 6 たいまつ 42 金貨 1 手裏剣 12 矢 アイテム総数: 62 ''' with support.captured_stdout() as stdout: display_inventory(stuff) self.assertEqual(expected, stdout.getvalue()) def test_add_to_inventory(self): inventory = {'金貨': 42, 'ロープ': 1} dragon_loot = ['金貨', '手裏剣', '金貨', '金貨', 'ルビー'] inv = add_to_inventory(inventory, dragon_loot) with support.captured_stdout() as stdout: display_inventory(inventory) expected = '''持ち物リスト: 45 金貨 1 ロープ 1 手裏剣 1 ルビー アイテム総数: 48 ''' self.assertEqual(expected, stdout.getvalue()) if __name__ == '__main__': main()
sample2.py
#!/usr/bin/env python3 def display_inventory(stuff: dict) -> None: item_total = 0 print('持ち物リスト:') for k, v in stuff.items(): print(f'{v} {k}') item_total += v print(f'アイテム総数: {item_total}') def add_to_inventory(inventory: dict, added_items: list) -> dict: for added_item in added_items: inventory.setdefault(added_item, 0) inventory[added_item] += 1 return inventory
入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))
C:\Users\...>py -3 sample2_test.py -v test_add_to_inventory (__main__.MyTestCase) ... ok test_display_inventory_output (__main__.MyTestCase) ... ok ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK C:\Users\...>
0 コメント:
コメントを投稿