2019年7月14日日曜日

開発環境

Head First はじめてのプログラミング ―頭とからだで覚えるPythonプログラミング入門 (Eric Freeman(著)、嶋田 健志(監修)、木下 哲也(翻訳)、株式会社オライリー・ジャパン)を8章(再帰と辞書 - 反復とインデックスを超えて)の自分で考えてみよう(353ページ)の解答を求めてみる。

コード

Python 3

#!/usr/bin/env python3
from unittest import TestCase, main
from test.support import captured_stdout
from typing import List


class SampleTestCase(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test(self):
        # フレーム3、2、1
        s = '''lst = [3]
first = 3
rest = []
lst = [2, 3]
first = 2
rest = [3]
lst = [1, 2, 3]
first = 1
rest = [2, 3]
'''
        with captured_stdout() as stdout:
            recursive_compute_sum([1, 2, 3])
        self.assertEqual(stdout.getvalue(), s)


def recursive_compute_sum(lst: List[int]) -> int:
    if not lst:
        return 0
    first: int = lst[0]
    rest: List[int] = lst[1:]
    sums: int = first + recursive_compute_sum(rest)
    print(f'lst = {lst}\nfirst = {first}\nrest = {rest}')
    return sums


if __name__ == '__main__':
    main()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

$ ./sample2.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
$ 

0 コメント:

コメントを投稿