--- title: 'Python Challenge Day 11 - Twice as old' disqus: hackmd --- ## Python Challenge Day 11 - Twice as old ### DESCRIPTION Your function takes two arguments: current father's age (years) current age of his son (years) Сalculate how many years ago the father was twice as old as his son (or in how many years he will be twice as old). The answer is always greater or equal to 0, no matter if it was in the past or it is in the future. 程式邏輯 --- 目的:計算多少年前父親的年齡是他兒子的兩倍(或多少年後他將是兒子的兩倍) 函數有兩個參數:當前父親的年齡(歲)、他兒子現在的年齡(歲) 注意:答案總是大於或等於 0 Sample Tests --- ``` python import codewars_test as test from solution import twice_as_old @test.describe("Fixed Tests") def fixed_tests(): @test.it('Basic Test Cases') def basic_test_cases(): test.assert_equals(twice_as_old(36,7) , 22) test.assert_equals(twice_as_old(55,30) , 5) test.assert_equals(twice_as_old(42,21) , 0) test.assert_equals(twice_as_old(22,1) , 20) test.assert_equals(twice_as_old(29,0) , 29) ``` Solution --- ### Practice 1: ``` python def twice_as_old(dad_years_old, son_years_old): if dad_years_old < 0 and son_years_old < 0: return False else: return abs(son_years_old*2 - dad_years_old) ``` * 使用 abs() 函數回傳數字的絕對值 當父親22歲,兒子1歲,1*2-22= -20,所以要使用abs才會是答案22 ### Practice 2: ``` python def twice_as_old(dad_years_old, son_years_old): return abs(dad_years_old - 2*son_years_old) ``` ### Practice 3: ``` python def twice_as_old(dad_years_old, son_years_old): twice_old = son_years_old * 2 years_ago = dad_years_old - twice_old return abs(years_ago) ``` ## 參考資源 :::info * [Kata](https://www.codewars.com/kata/5b853229cfde412a470000d0) :::