diff options
| -rw-r--r-- | basics/opt/deep_copy_opt.py | 26 | ||||
| -rw-r--r-- | basics/python_basics.py | 3 | ||||
| -rw-r--r-- | finance/discount_time_value.py | 14 | ||||
| -rw-r--r-- | finance/equal_principal_interest.py | 6 |
4 files changed, 46 insertions, 3 deletions
diff --git a/basics/opt/deep_copy_opt.py b/basics/opt/deep_copy_opt.py new file mode 100644 index 0000000..d537b15 --- /dev/null +++ b/basics/opt/deep_copy_opt.py @@ -0,0 +1,26 @@ + +_dispatcher = {} + +def _copy_list(_l): + ret = _l.copy() + for idx, item in enumerate(ret): + cp = _dispatcher.get(type(item)) + if cp is not None: + ret[idx] = cp(item) + return ret +_dispatcher[list] = _copy_list + +def _copy_dict(d): + ret = d.copy() + for key, value in ret.items(): + cp = _dispatcher.get(type(value)) + if cp is not None: + ret[key] = cp(value) + + return ret +_dispatcher[dict] = _copy_dict + + +if __name__ == '__main__': + l = [1, 2, 3] + _copy_list(l)
\ No newline at end of file diff --git a/basics/python_basics.py b/basics/python_basics.py index bf780cc..34b43e2 100644 --- a/basics/python_basics.py +++ b/basics/python_basics.py @@ -1,4 +1,6 @@ +import copy + def check_num_id(i): a = i b = i @@ -8,3 +10,4 @@ def check_num_id(i): if __name__ == '__main__': for i in range(200, 260): check_num_id(i) + copy.deepcopy() diff --git a/finance/discount_time_value.py b/finance/discount_time_value.py new file mode 100644 index 0000000..d3b88df --- /dev/null +++ b/finance/discount_time_value.py @@ -0,0 +1,14 @@ + + +def npv(pays, r): + return sum([pay/((1+r)**(i+1)) for i, pay in enumerate(pays)]) + + +if __name__ == '__main__': + pays = [236.8, 236.8+1000] + r = 0.2368 + print(npv(pays, r)) + + pays = [192.06, 192.06+1100] + r = 0.1746 + print(npv(pays, r)) diff --git a/finance/equal_principal_interest.py b/finance/equal_principal_interest.py index 035fd8c..2954260 100644 --- a/finance/equal_principal_interest.py +++ b/finance/equal_principal_interest.py @@ -12,8 +12,8 @@ def monthly_analysis(p, r, n): if __name__ == '__main__': - p = 600000 - r = 0.06 - n = 20*12 + p = 2000000 + r = 0.055 + n = 30*12 monthly_analysis(p, r, n) |
