Skip to content

Commit 4474f69

Browse files
committed
Added typing for 1.10 solution.
1 parent 71dfae0 commit 4474f69

1 file changed

Lines changed: 22 additions & 16 deletions

File tree

‎Work/chapter_1/mortgage.py‎

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,48 @@
22
mortgage.py
33
"""
44

5-
PRINCIPAL = 500000.0
6-
RATE = 0.05
7-
PAYMENT = 2684.11
8-
CURRENT_PAYMENT = 0.0
9-
EXTRA_PAYMENT = 1000.0
10-
EXTRA_PAYMENT_START_MONTH = 60
11-
EXTRA_PAYMENT_END_MONTH = 108
12-
TOTAL_PAID = 0.0
13-
MONTHS_PAID = 0
5+
PRINCIPAL: float = 500000.0
6+
RATE: float = 0.05
7+
PAYMENT: float = 2684.11
8+
CURRENT_PAYMENT: float = 0.0
9+
EXTRA_PAYMENT: float = 1000.0
10+
EXTRA_PAYMENT_START_MONTH: int = 60
11+
EXTRA_PAYMENT_END_MONTH: int = 108
12+
TOTAL_PAID: float = 0.0
13+
MONTHS_PAID: int = 0
1414

15-
def print_payment_history(months_paid, current_payment, total_payment, principal):
15+
def print_payment_history(
16+
months_paid: int,
17+
current_payment: float,
18+
total_payment: float,
19+
principal: float
20+
) -> None:
1621
"""
1722
print_payment_history formats arguments, rounds each argument to two decimals
1823
and prints themt to the console.
1924
"""
2025
print(
21-
round(months_paid, 2),
26+
months_paid,
2227
round(current_payment, 2),
2328
round(total_payment, 2),
2429
round(principal, 2)
2530
)
2631

2732
while PRINCIPAL > 0:
33+
CURRENT_PAYMENT = PAYMENT
2834
MONTHS_PAID = MONTHS_PAID + 1
2935

36+
# Make extra payments between months 60 and 108
37+
if EXTRA_PAYMENT_START_MONTH <= MONTHS_PAID <= EXTRA_PAYMENT_END_MONTH:
38+
CURRENT_PAYMENT = PAYMENT + EXTRA_PAYMENT
39+
40+
# Last payment should be principal only (no interest) and break out immediately
3041
if PRINCIPAL < PAYMENT:
3142
CURRENT_PAYMENT = PRINCIPAL
3243
TOTAL_PAID = TOTAL_PAID + PRINCIPAL
3344
PRINCIPAL = 0
3445
break
3546

36-
if EXTRA_PAYMENT_START_MONTH <= MONTHS_PAID <= EXTRA_PAYMENT_END_MONTH:
37-
CURRENT_PAYMENT = PAYMENT + EXTRA_PAYMENT
38-
else:
39-
CURRENT_PAYMENT = PAYMENT
40-
4147
TOTAL_PAID = TOTAL_PAID + CURRENT_PAYMENT
4248
PRINCIPAL = PRINCIPAL * (1 + RATE / 12) - CURRENT_PAYMENT
4349
print_payment_history(MONTHS_PAID, CURRENT_PAYMENT, TOTAL_PAID, PRINCIPAL)

0 commit comments

Comments
 (0)