Diskonttaus on päinvastainen tapahtuma koronkorolle, eli lasketaan alkupääoma nykyarvosta. Diskonttauksen kaava koostuu nykyarvosta, korkotekijästä ja korkokausista (tässä tapauksessa vuosi)
from tkinter import * def LaskeDiskonttaus(nykyarvo,korkotekija,korkokaudet): tulos = nykyarvo*(1+korkotekija/100.0)**(-1*korkokaudet) return tulos def Diskonttaus(): #Otetaan lähtötiedot. nykyarvo = saadinNykyarvo.get() korkotekija = saadinKorkotekija.get() korkokaudet = saadinKorkokaudet.get() #Lasketaan diskottaus. listaTulos.insert("end",LaskeDiskonttaus(nykyarvo,korkotekija,korkokaudet)) def PoistaArvo(event): valinta = listaTulos.curselection() listaTulos.delete(valinta) root = Tk() kehysSaatimet = Frame(root) kehysSaatimet.pack() #Laitetaan säätimet ja selitetekstin niille. #Nykyarvo tekstiNykyarvo = Label(kehysSaatimet) tekstiNykyarvo.pack() tekstiNykyarvo.config(text="Nykyarvo") lukuNykyarvo = DoubleVar() saadinNykyarvo = Scale(kehysSaatimet,from_=0, to=10000, variable=lukuNykyarvo) saadinNykyarvo.pack() #Korkotekijä tekstiKorkotekija = Label(kehysSaatimet) tekstiKorkotekija.pack() tekstiKorkotekija.config(text="Korkotekija") lukuKorkotekija = DoubleVar() saadinKorkotekija = Scale(kehysSaatimet,from_=0, to=10,variable=lukuKorkotekija) saadinKorkotekija.pack() #Korkokaudet tekstiKorkokaudet = Label(kehysSaatimet) tekstiKorkokaudet.pack() tekstiKorkokaudet.config(text="Korkokaudet") lukuKorkokaudet = DoubleVar() saadinKorkokaudet = Scale(kehysSaatimet,from_=0, to=10,variable=lukuKorkokaudet) saadinKorkokaudet.pack() #Laitetaan muut kontrollit. kehysMuut = Frame(root) kehysMuut.pack() listaTulos = Listbox(kehysMuut) listaTulos.pack() listaTulos.bind('<Double-1>',PoistaArvo) nappain = Button(kehysMuut, text="Laske", command=Diskonttaus) nappain.pack() root.mainloop()
Voisit lopettaa harhaanjohtavan otsikoinnin ja duplikaattien postailun. Koodista näkee selkeästi, että ohjelman tarkoitus on muodostaa graafinen käyttöliittymä Tkinter-kirjastoa käyttäen. Muistaakseni olet julkaissut jo lähemmäs sata identtistä esimerkkiä, joten onko näillä enää yhtään mitään arvoa?
Labelit ja framet alkavat jo olla tuttuja, joten kokeile ensi kerralla demota uusien widgettien käyttöä.
Otsikon mukainen koodiesimerkki olisi tosiaan melkoisen lyhyt:
def LaskeDiskonttaus(nykyarvo,korkotekija,korkokaudet): return nykyarvo*(1+korkotekija/100.0)**(-1*korkokaudet)
Onhan tuo diskonttaus -metodina tai miksei kokonaisena omana ohjelmanaan ihan hyödyllinen, jota kirjanpitäjät voivat hyödyntää, tuo "VilleVal" -esittämä funktio voisi olla ihan käyttökelpoinen, jos lähtee laatimaan kokonaisvaltaista kirjanpito-ohjelmaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.