summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhang <zch921005@126.com>2022-08-08 22:46:45 +0800
committerzhang <zch921005@126.com>2022-08-08 22:46:45 +0800
commit912916a56b7f6469ce1c4cbf430f7c48ff918a3c (patch)
tree585f30a03d56eacf5b67520f1366f3529b330f41
parent1a83481394812c9f8dbebd60a04b3b66655cd01b (diff)
copy
-rw-r--r--basics/opt/deep_copy_opt.py26
-rw-r--r--basics/python_basics.py3
-rw-r--r--finance/discount_time_value.py14
-rw-r--r--finance/equal_principal_interest.py6
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)