Lær deg Python_21 - itnett/FTD02H-N GitHub Wiki

Her er et Python-program på norsk, med norske kroner (NOK) og norske kommentarer. Jeg skal også forklare hvordan koden kan utvides for å gjøre programmet enda mer funksjonelt.

Programmet på norsk:

# Få detaljer om lånet
pengene_skyldt = float(input('Hvor mye penger skylder du, i kroner?\n'))  # Eksempel: 500 000 kr
rente = float(input('Hva er den årlige renten på lånet (i prosent)?\n'))  # Eksempel: 3%
betaling = float(input('Hvor mye skal du betale hver måned (i kroner)?\n'))  # Eksempel: 10 000 kr
antall_maaneder = int(input('Hvor mange måneder vil du se resultatet for?\n'))  # Eksempel: 24

# Beregn månedlig rente
maanedlig_rente = rente / 100 / 12

# Løkken for å gå gjennom månedene
for i in range(antall_maaneder):
    # Beregn renter å betale
    renter_betalt = round(pengene_skyldt * maanedlig_rente, 2)

    # Legg til renter til beløpet du skylder
    pengene_skyldt = pengene_skyldt + renter_betalt

    # Hvis betalingen vil betale mer enn det som er skyldt
    if pengene_skyldt - betaling < 0:
        print(f'Den siste betalingen er {round(pengene_skyldt, 2)} kroner')
        print(f'Du betalte ned lånet på {i + 1} måneder')
        break

    # Foreta en betaling
    pengene_skyldt = round(pengene_skyldt - betaling, 2)

    # Skriv ut status for hver måned
    print(f'Måned {i + 1}: Betalte {betaling} kr, hvorav {renter_betalt} kr var renter. Nå skylder du {pengene_skyldt} kr.')

# Hvis lånet ikke ble betalt innen det angitte antallet måneder
if pengene_skyldt > 0:
    print(f'Du skylder fortsatt {pengene_skyldt} kr etter {antall_maaneder} måneder.')

Hva gjør koden?

  1. Henter inn brukerinput for beløp, rente, månedlig betaling og hvor mange måneder de vil simulere.
  2. Beregner månedlig rente basert på den årlige renten.
  3. Itererer gjennom månedene for å:
    • Beregne renter for den måneden.
    • Legge renter til det skyldte beløpet.
    • Redusere det skyldte beløpet etter en betaling.
    • Hvis lånet er betalt før den siste måneden, stopper det og viser hvor mange måneder det tok å betale ned lånet.
  4. Skriver ut status hver måned for å vise hvor mye av betalingen som gikk til renter, og hvor mye som gjenstår å betale.

Mulige utvidelser av koden

  1. Legge til valg for avdragsfrie perioder:

    • Du kan legge til en funksjon der brukeren kan velge om de ønsker å ha avdragsfrie måneder i starten av lånet der de kun betaler renter.
  2. Variabel rente:

    • For å gjøre programmet mer realistisk, kan du la renten variere over tid. Dette kan gjøres ved å legge til en liste med månedlige rentesatser, eller ved å simulere en gradvis økning eller reduksjon i renten.
  3. Lagrede betalingsplaner:

    • Du kan lagre hver måneds betalingsinformasjon i en liste eller fil, slik at brukeren kan se tilbake på betalingsplanen etter at programmet er kjørt.
  4. Grafisk representasjon:

    • Ved å bruke biblioteker som matplotlib, kan du lage grafer som viser utviklingen av gjelden over tid, hvor mye som går til renter vs. hovedstolen, og hvor raskt gjelden nedbetales.
  5. Spesialtilpassede meldinger:

    • Gi brukeren mer detaljer om betalingsplanen, inkludert totalt betalte renter og hovedstol, og hvor mye som er betalt tilbake etter et gitt antall måneder.
  6. Ekstra innbetalinger:

    • Legg til funksjonalitet der brukeren kan velge å betale mer i noen måneder for å betale ned lånet raskere. Dette kan redusere rentekostnadene.
  7. Valutaalternativer:

    • For de som ønsker å bruke andre valutaer, kan du legge til støtte for flere valutaer med dynamiske valutakurser.
  8. Månedlig rapportering:

    • I stedet for bare å vise informasjon i konsollen, kan programmet sende månedlige rapporter (ved hjelp av e-post) som inneholder en oppdatert betalingsplan.

Oppsummering

Dette programmet gir et godt grunnlag for å forstå lån og tilbakebetaling, men det kan forbedres og tilpasses på mange måter for å gjøre det mer robust og nyttig for forskjellige situasjoner.

Her er den forbedrede versjonen av programmet som inkluderer feilhåndtering for brukerinput og en sjekk for å sikre at den månedlige betalingen er tilstrekkelig til å dekke rentene:

Forbedret Python-program med feilhåndtering

# Få detaljer om lånet
try:
    pengene_skyldt = float(input('Hvor mye penger skylder du, i kroner?\n'))  # Eksempel: 500 000 kr
    rente = float(input('Hva er den årlige renten på lånet (i prosent)?\n'))  # Eksempel: 3%
    betaling = float(input('Hvor mye skal du betale hver måned (i kroner)?\n'))  # Eksempel: 10 000 kr
    antall_maaneder = int(input('Hvor mange måneder vil du se resultatet for?\n'))  # Eksempel: 24
except ValueError:
    print("Vennligst oppgi gyldige numeriske verdier.")
    exit()

# Beregn månedlig rente
maanedlig_rente = rente / 100 / 12

# Sjekk om månedlig betaling er tilstrekkelig til å dekke rentene
if betaling <= pengene_skyldt * maanedlig_rente:
    print("Månedlig betaling er ikke tilstrekkelig til å dekke rentene. Vennligst øk betalingen.")
    exit()

# Løkken for å gå gjennom månedene
for i in range(antall_maaneder):
    # Beregn renter å betale
    renter_betalt = round(pengene_skyldt * maanedlig_rente, 2)

    # Legg til renter til beløpet du skylder
    pengene_skyldt = pengene_skyldt + renter_betalt

    # Hvis betalingen vil betale mer enn det som er skyldt
    if pengene_skyldt - betaling < 0:
        print(f'Den siste betalingen er {round(pengene_skyldt, 2)} kroner')
        print(f'Du betalte ned lånet på {i + 1} måneder')
        break

    # Foreta en betaling
    pengene_skyldt = round(pengene_skyldt - betaling, 2)

    # Skriv ut status for hver måned
    print(f'Måned {i + 1}: Betalte {betaling} kr, hvorav {renter_betalt} kr var renter. Nå skylder du {pengene_skyldt} kr.')

# Hvis lånet ikke ble betalt innen det angitte antallet måneder
if pengene_skyldt > 0:
    print(f'Du skylder fortsatt {pengene_skyldt} kr etter {antall_maaneder} måneder.')

Hva er forbedret?

  1. Feilhåndtering (try/except):

    • try/except blokken fanger opp ikke-numeriske verdier som brukeren kan skrive inn. Hvis noen av de forventede numeriske verdiene ikke er gyldige, vil programmet skrive ut en melding og avslutte.
    • Dette sikrer at programmet ikke krasjer hvis brukeren ved et uhell skriver inn bokstaver eller symboler i stedet for tall.
  2. Sjekk for tilstrekkelig månedlig betaling:

    • Programmet sjekker om den månedlige betalingen er minst nok til å dekke rentekostnadene hver måned. Hvis betalingen er lavere enn renten, vil gjelden vokse, og programmet informerer brukeren om at de må øke sin månedlige betaling.
  3. Forhindre at brukeren blir fanget i en evig gjeld:

    • Ved å sikre at betalingen dekker rentene, forhindrer vi at brukeren bare betaler renter uten å redusere hovedgjelden.

Mulige utvidelser av koden:

  1. Tillegg av avdragsfri periode:

    • Du kan legge til funksjonalitet for å tillate brukeren å ha en periode uten avdrag der de kun betaler renter.
  2. Grafisk fremstilling av gjeldens utvikling:

    • Bruk biblioteker som matplotlib for å vise hvordan gjelden reduseres måned for måned, med en graf som viser andelen renter vs. avdrag i hver betaling.
  3. Tillegg av ekstra innbetalinger:

    • Legg til en funksjon der brukeren kan gjøre ekstra innbetalinger i noen måneder for å betale ned lånet raskere.
  4. Generer detaljerte månedlige rapporter:

    • Du kan generere en månedlig rapport som viser detaljer om hver betaling (for eksempel hvor mye som gikk til renter og hvor mye som reduserte hovedgjelden). Dette kan lagres i en fil som brukeren kan se gjennom etterpå.
  5. Simulering av variabel rente:

    • I stedet for en fast rente, kan du simulere en variabel rente som endrer seg over tid. Dette vil gjøre programmet mer realistisk for de som har lån med flytende rente.
  6. Forbedret feilhåndtering:

    • Utvid feilhåndteringen ved å sjekke at brukerinput er positive verdier, og gi meningsfulle feilmeldinger hvis verdiene er urimelige (som en negativ rente eller negativ betaling).

Hvordan du kan bruke disse ferdighetene til andre skript:

  • Avbetalingsplaner for kjøp: Bruk samme prinsipper for å simulere nedbetaling av store kjøp som biler, elektronikk eller andre varer kjøpt på avbetaling.
  • Rentekalkulatorer: Lag rentekalkulatorer for sparekontoer eller investeringer med forskjellige rentesatser og innskuddsplaner.
  • Budsjettering: Opprett budsjettplanleggingsprogrammer for å hjelpe brukere med å administrere månedlige utgifter og gjeld.
  • Pensjonssparing: Simuler hvordan månedlige innskudd og rentesammensetning påvirker pensjonssparing over tid.

Her er en forklaring på hvordan skriptet fungerer, steg for steg, på norsk og med emojis! 🎉


💸 Låneberegning: Python-program for å beregne nedbetaling av lån

Dette Python-programmet er designet for å hjelpe deg med å følge fremdriften i nedbetalingen av et lån. Det tar inn informasjon fra brukeren, som hvor mye penger du skylder, renten på lånet, hvor mye du vil betale hver måned, og hvor mange måneder du ønsker å se resultatene for. La oss bryte det ned steg for steg! 👇


🧮 1. Få detaljer om lånet

Programmet starter med å spørre brukeren om flere viktige opplysninger:

  • Hvor mye penger du skylder totalt (pengene_skyldt).
  • Hva den årlige renten er (rente).
  • Hvor mye du planlegger å betale hver måned (betaling).
  • Hvor mange måneder du ønsker å se nedbetalingen for (antall_maaneder).

Disse verdiene blir omgjort til tall ved å bruke float() for penger (desimaltall) og int() for måneder (heltall).

try:
    pengene_skyldt = float(input('Hvor mye penger skylder du, i kroner?\n'))  # Eksempel: 500 000 kr
    rente = float(input('Hva er den årlige renten på lånet (i prosent)?\n'))  # Eksempel: 3%
    betaling = float(input('Hvor mye skal du betale hver måned (i kroner)?\n'))  # Eksempel: 10 000 kr
    antall_maaneder = int(input('Hvor mange måneder vil du se resultatet for?\n'))  # Eksempel: 24
except ValueError:
    print("Vennligst oppgi gyldige numeriske verdier.")
    exit()

⚠️ Feilhåndtering: Hvis brukeren skriver inn ugyldige verdier (som tekst i stedet for tall), vil programmet vise en feilmelding og avslutte.


🧮 2. Beregn månedlig rente

Deretter beregner programmet månedlig rente. Renten er opprinnelig gitt som en årlig prosent, så vi deler den på 100 for å gjøre den om til en desimal, og deretter deler vi på 12 for å finne renten per måned.

maanedlig_rente = rente / 100 / 12

💡 3. Sjekk om månedlig betaling er tilstrekkelig

Programmet sjekker nå om den månedlige betalingen er tilstrekkelig til å dekke de månedlige rentekostnadene. Hvis betalingen er for lav til å dekke renten, vil programmet be brukeren om å øke beløpet.

if betaling <= pengene_skyldt * maanedlig_rente:
    print("Månedlig betaling er ikke tilstrekkelig til å dekke rentene. Vennligst øk betalingen.")
    exit()

🔄 4. Iterer gjennom månedene

Programmet går nå gjennom hver måned for å beregne nedbetalingen. For hver måned beregner programmet hvor mye renter du må betale, legger det til den totale gjelden, og trekker deretter fra den månedlige betalingen.

Steg i hver måned:

  • Beregn månedens renter (renter_betalt).
  • Legg til rentene i det totale beløpet du skylder.
  • Sjekk om du kan betale hele gjelden med den månedlige betalingen.
    • Hvis ja, vis beløpet som gjenstår og avslutt løkken.
  • Hvis ikke, trekk fra den månedlige betalingen fra det totale beløpet.
for i in range(antall_maaneder):
    renter_betalt = round(pengene_skyldt * maanedlig_rente, 2)
    pengene_skyldt = pengene_skyldt + renter_betalt
    
    if pengene_skyldt - betaling < 0:
        print(f'Den siste betalingen er {round(pengene_skyldt, 2)} kroner')
        print(f'Du betalte ned lånet på {i + 1} måneder')
        break

    pengene_skyldt = round(pengene_skyldt - betaling, 2)

    print(f'Måned {i + 1}: Betalte {betaling} kr, hvorav {renter_betalt} kr var renter. Nå skylder du {pengene_skyldt} kr.')

🏁 5. Utskrift av status

For hver måned skriver programmet ut hvor mye du betalte, hvor mye av betalingen som var renter, og hvor mye du fortsatt skylder.

Eksempel på utskrift:

Måned 1: Betalte 10000 kr, hvorav 1250 kr var renter. Nå skylder du 490000 kr.
Måned 2: Betalte 10000 kr, hvorav 1225 kr var renter. Nå skylder du 480225 kr.

🛑 6. Hvis lånet ikke er betalt i løpet av perioden

Hvis du etter å ha gått gjennom alle månedene fortsatt skylder penger, vil programmet informere deg om hvor mye du skylder etter perioden.

if pengene_skyldt > 0:
    print(f'Du skylder fortsatt {pengene_skyldt} kr etter {antall_maaneder} måneder.')

🎯 Sammendrag:

Dette programmet tar deg steg for steg gjennom prosessen med å betale ned et lån. Det beregner renter, sjekker om du kan betale ned lånet over tid, og skriver ut statusen for hver måned. Hvis du ikke betaler nok til å dekke rentene, advarer det deg.


🎨 Mulige utvidelser av programmet:

  • Fleksible renter: Du kan legge til en funksjon der renten endres over tid.
  • Ekstra betalinger: Legg til funksjoner som lar brukeren gjøre ekstra innbetalinger når de vil.
  • Visuell fremstilling: Bruk grafer for å vise hvordan gjelden reduseres måned for måned.
  • Spareplan: Bruk samme prinsipp for å lage et program som viser hvordan sparing vokser over tid med rentes rente.

Håper denne forklaringen hjalp deg med å forstå koden og hvordan den fungerer! 🎉