From 2fb3beeaf1215a1be4a7bc97097ef6a33fd65aeb Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 16 Jul 2019 07:26:28 +0200 Subject: [PATCH] Fix error message and format with python/black (#1025) @SandersLin Your review please? --- dynamic_programming/climbing_stairs.py | 59 ++++++++++++++++---------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/dynamic_programming/climbing_stairs.py b/dynamic_programming/climbing_stairs.py index 8a6213b22..79605261f 100644 --- a/dynamic_programming/climbing_stairs.py +++ b/dynamic_programming/climbing_stairs.py @@ -1,27 +1,42 @@ +#!/usr/bin/env python3 + + def climb_stairs(n: int) -> int: - """ - LeetCdoe No.70: Climbing Stairs - Distinct ways to climb a n step staircase where - each time you can either climb 1 or 2 steps. + """ + LeetCdoe No.70: Climbing Stairs + Distinct ways to climb a n step staircase where + each time you can either climb 1 or 2 steps. - Args: - n: number of steps of staircase + Args: + n: number of steps of staircase - Returns: - Distinct ways to climb a n step staircase + Returns: + Distinct ways to climb a n step staircase - Raises: - AssertionError: n not positive integer + Raises: + AssertionError: n not positive integer - >>> climb_stairs(3) - 3 - >>> climb_stairs(1) - 1 - """ - assert isinstance(n,int) and n > 0, "n needs to be positive integer, your input {0}".format(0) - if n == 1: return 1 - dp = [0]*(n+1) - dp[0], dp[1] = (1, 1) - for i in range(2,n+1): - dp[i] = dp[i-1] + dp[i-2] - return dp[n] + >>> climb_stairs(3) + 3 + >>> climb_stairs(1) + 1 + >>> climb_stairs(-7) # doctest: +ELLIPSIS + Traceback (most recent call last): + ... + AssertionError: n needs to be positive integer, your input -7 + """ + fmt = "n needs to be positive integer, your input {}" + assert isinstance(n, int) and n > 0, fmt.format(n) + if n == 1: + return 1 + dp = [0] * (n + 1) + dp[0], dp[1] = (1, 1) + for i in range(2, n + 1): + dp[i] = dp[i - 1] + dp[i - 2] + return dp[n] + + +if __name__ == "__main__": + import doctest + + doctest.testmod()