Avatar billede poloen Nybegynder
11. april 2013 - 19:22 Der er 1 kommentar og
1 løsning

Kritik af Python kode

Jeg er Python novice og har skrevet en kode til lån af bank, kritér.

from math import pow
from decimal import *

def round(x):
    x = Decimal(x).quantize(Decimal('.01'), rounding=ROUND_DOWN)
    return x

def myprint(s, i):
    print s, '{:>8}'.format(i)

def ncl(r, t, k, a):
    y = 0
    k = k + k * .02 + 600
    terminer = [12, 24, 36, 48, 60, 72, 84, 96, 108, 120]
    for y in range(0, t * 12):
        y = y + 1
        if y / 12 >= t:
            print " Lånet er ikke holdbart"
            return
        if k >= 700:
            if terminer.count(y):
                kr = k * r
                k = k + kr - a
                myprint("Termin nr:\t", y / 12)
                myprint("Måned:\t\t", y)
                myprint("Renten:\t\t", round(kr))
                myprint("Kapital:\t", round(k))
                myprint("Afdrag:\t\t", round(a))
                print
            elif not terminer.count(y):
                k = k - a
                myprint("Måned:\t\t", y)
                myprint("Kapital:\t", round(k))
                myprint("Afdrag:\t\t", round(a))
                print
        elif k < 700:
            if terminer.count(y):
                kr = k * r
                k = k + k * r - a
                myprint("Termin nr:\t", y / 12)
                myprint("Måned:\t\t", y)
                myprint("Renten:\t\t", round(kr))
                myprint("Kapital:\t", round(k))
                myprint("Afdrag:\t\t", round(a))
                print
            elif not terminer.count(y):
                k0 = k
                k = k - k
                myprint("Måned:\t\t", y)
                myprint("Kapital:\t", round(k))
                myprint("Afdrag:\t\t", round(k0))
                print
        if k <= 0:
            print "Lånet er tilbagebetalt"
            return
 
ren = 0.11
ter = 10
kap = 15000
afd = 700

ncl(ren, ter, kap, afd)
Avatar billede arne_v Ekspert
13. april 2013 - 04:35 #1
Det kan ihvertfald skrives som:

from math import pow
from decimal import *

def round(x):
    x = Decimal(x).quantize(Decimal('.01'), rounding=ROUND_DOWN)
    return x

def myprint(s, i):
    print s, '{:>8}'.format(i)

def ncl(r, t, k, a):
    k = k + k * 0.02 + 600
    y = 0
    while(k > 0):
        y = y + 1
        if y / 12 >= t:
            print "Lånet er ikke holdbart"
            return
        termin = y % 12 == 0
        kr = k * r if termin else 0
        if k + kr < a:
            a = k + kr
        k = k + kr - a
        if termin:
            myprint("Termin nr:\t", y / 12)
        myprint("Måned:\t\t", y)
        if termin:
            myprint("Renten:\t\t", round(kr))
        myprint("Kapital:\t", round(k))
        myprint("Afdrag:\t\t", round(a))
        print
    print "Lånet er tilbagebetalt"
    return

ren = 0.11
ter = 10
kap = 15000
afd = 700

ncl(ren, ter, kap, afd)
Avatar billede arne_v Ekspert
30. juli 2013 - 05:11 #2
all set?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester