Asuntolainaesimerkki
Tarkastellaan alussa mainittua esimerkkiä. Halutaan kirjoittaa ohjelma, joka tulostaa tasalyhenteisen lainan maksusuunnitelman eli kuukausittain maksettavat korko- ja lyhennyserät. Ohjelma pyytää käyttäjältä laina-ajan vuosina, lainasumman sekä korkoprosentin. Yksinkertaisuuden vuoksi oletetaan, että korkoprosentti pysyy samana koko laina-ajan.
Kuukausittainen lyhennyserä saadaan jakamalla lainasumma laina-aikaan kuuluvien kuukausien määrällä. Lyhennys pysyy koko laina-ajan samana. Kuukausittain maksettava korkoerä taas vaihtelee sen mukaan, kuinka paljon lainan pääomaa on vielä jäljellä. Jokaista kuukautta kohti lasketaan jäljellä olevan pääoman aiheuttama korkoerä ja tämän jälkeen vähennetään lyhennyserä pääomasta. Ohjelma on kirjoitettu alla while-käskyn avulla. Yksinkertaisuuden vuoksi pyöristysvirheiden mahdollisuutta ei ole otettu huomioon, vaan yhteensä takaisin maksettava lainapääoma voi poiketa muutamalla sentillä alkuperäisestä lainasummasta.
def main():
print("Ohjelma laskee asuntolainan kuukausierat.")
rivi = input("Anna lainasumma: ")
lainasumma = float(rivi)
rivi = input("Anna laina-aika vuosina: ")
laina_aika = int(rivi)
if laina_aika < 1:
print("Liian lyhyt laina-aika")
else:
kk_lkm = 12 * laina_aika
rivi = input("Anna korkoprosentti: ")
korko = float(rivi)
lyhennys = lainasumma / kk_lkm
paaoma = lainasumma
i = 0
print(" lyhennys korko yhteensa")
while i < kk_lkm:
i = i + 1
korkoera = korko / 1200.0 * paaoma
paaoma = paaoma - lyhennys
kuukausiera = korkoera + lyhennys
print(f"{i:2d}. {lyhennys:8.2f} {korkoera:8.2f} {kuukausiera:8.2f}")
main()
Esimerkki ohjelman suorituksesta:
Ohjelma laskee asuntolainan kuukausierat.
Anna lainasumma: 20000
Anna laina-aika vuosina: 2
Anna korkoprosentti: 5.5
lyhennys korko yhteensa
1. 833.33 91.67 925.00
2. 833.33 87.85 921.18
3. 833.33 84.03 917.36
4. 833.33 80.21 913.54
5. 833.33 76.39 909.72
6. 833.33 72.57 905.90
7. 833.33 68.75 902.08
8. 833.33 64.93 898.26
9. 833.33 61.11 894.44
10. 833.33 57.29 890.62
11. 833.33 53.47 886.81
12. 833.33 49.65 882.99
13. 833.33 45.83 879.17
14. 833.33 42.01 875.35
15. 833.33 38.19 871.53
16. 833.33 34.37 867.71
17. 833.33 30.56 863.89
18. 833.33 26.74 860.07
19. 833.33 22.92 856.25
20. 833.33 19.10 852.43
21. 833.33 15.28 848.61
22. 833.33 11.46 844.79
23. 833.33 7.64 840.97
24. 833.33 3.82 837.15
Toinen esimerkki:
Ohjelma laskee asuntolainan kuukausierat.
Anna lainasumma: 100000
Anna laina-aika vuosina: 0
Liian lyhyt laina-aika
Sama ohjelma voidaan kirjoittaa for-käskyn avulla seuraavasti:
def main():
print("Ohjelma laskee asuntolainan kuukausierat.")
rivi = input("Anna lainasumma: ")
lainasumma = float(rivi)
rivi = input("Anna laina-aika vuosina: ")
laina_aika = int(rivi)
if laina_aika < 1:
print("Liian lyhyt laina-aika")
else:
kk_lkm = 12 * laina_aika
rivi = input("Anna korkoprosentti: ")
korko = float(rivi)
lyhennys = lainasumma / kk_lkm
paaoma = lainasumma
print(" lyhennys korko yhteensa")
for i in range(1, kk_lkm + 1):
korkoera = korko / 1200.0 * paaoma
paaoma = paaoma - lyhennys
kuukausiera = korkoera + lyhennys
print(f"{i:2d}. {lyhennys:8.2f} {korkoera:8.2f} {kuukausiera:8.2f}")
main()
Tässä ohjelmassa silmukkalaskuria i ei siis alusteta eikä sen arvoa kasvateta joka kierroksella, koska for-käsky huolehtii näistä toimenpiteistä yhdessä range-funktion kanssa.