Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Python: BKT ja huoltotase

Sivun loppuun

koodaaja [22.06.2021 12:22:01]

#

Tämä ohjelma laskee bruttokansantuotteen lopputuotemenetelmällä, joka muodostuu kulutuksesta, investoinneista, sekä nettoviennistä. Lisäksi muodostetaan huoltotase, jossa kokonaistarjonnan ja kysynnän täytyy olla yhtäsuuria

from tkinter import *
from matplotlib import pyplot as plt
import numpy as np

root = Tk()


def Laske():
 syote = ["","","","",""]

 #Otetaan lähtötiedot.
 #Syötettäviä tietoja on viisi ja tekstikenttiä on kolme kappaeltta.
 syote[0],syote[1] = entry.get().split(',')
 syote[2] = entry2.get()
 syote[3],syote[4] = entry3.get().split(',')
 tiedot = [0,0,0,0,0]
 #Tallennetaan tiedot.
 tiedot = [float(x) for x in syote]

 #Lasketaan BKT lopputuotemenetelmällä.
 bkt = sum(tiedot[0:3])+(tiedot[3]-tiedot[4])

 #Näytetään samalla kokonaiskysyntä ja kokonaistarjonta.
 #Kysynnän ja tarjonnan täytyy olla yhtä suuria.
 tarjonta = bkt+tiedot[4]

 kysynta = sum(tiedot[0:4])
 varastot = 0.0
 if (tarjonta != kysynta):
  varastot = tarjonta-kysynta
  varastot = round(varastot*100)/100.0
 #Näytetään tulokset.
 var4.set("BKT:" + str(bkt))

 if (int(var8.get()) == 1):
  var5.set("Tarjonta:" + str(bkt) + " + " + str(tiedot[4]))
  var6.set("Kysyntä:" + str(tiedot[0]) + " + " + str(tiedot[1]) + " + " + str(tiedot[2]) + " + " + str(tiedot[3]) + " + " + str(varastot))
 else:
  var5.set("")
  var6.set("")
 #Valinnan mukaan näytetään joko kokonaistarjonta -tai kysyntä.
 if (int(var7.get()) == 1):
  data = [bkt,tiedot[4]]
  fig = plt.figure(figsize=(10,7))
  plt.pie(data,labels=["BKT","tuonti"])
  plt.show()
 else:
  data = [tiedot[0],tiedot[1],tiedot[2],tiedot[3],varastot]
  fig = plt.figure(figsize=(10,7))
  plt.pie(data,labels=["Yksityinen","Julkinen","Investointi","Vienti","Varastot"])
  plt.show()

frame = Frame(root)
frame.pack()
#Luodaan kontrollit.

#Ensimmäinen frame
var = StringVar()
var2 = StringVar()
var3 = StringVar()

label = Label(frame,textvariable=var)
var.set("Yksityinen/julkinen kulutus")
label.pack()

entry = Entry(frame)
entry.pack()

label2 = Label(frame,textvariable=var2)
var2.set("Investoinnit")
label2.pack()

entry2 = Entry(frame)
entry2.pack()

label3 = Label(frame,textvariable=var3)
var3.set("Vienti/Tuonti")
label3.pack()


entry3 = Entry(frame)
entry3.pack()

#Toinen frame
frame2 = Frame(root)
frame2.pack()
btn = Button(frame2,text="Laske",command=Laske)
btn.pack()

#Kolmas frame
frame3 = Frame(root)
frame3.pack()
var4 = StringVar()
var5 = StringVar()
var6 = StringVar()

label4 = Label(frame3,textvariable=var4)
label4.pack()
label5 = Label(frame3,textvariable=var5)
label5.pack()
label6 = Label(frame3,textvariable=var6)
label6.pack()

var7 = IntVar()
check = Checkbutton(frame3,text="Kysyntä",variable=var7,onvalue=1,offvalue=0)
check.pack()

var8 = IntVar()
check2 = Checkbutton(frame3,text="Näytä",variable=var8,onvalue=1,offvalue=0)
check2.pack()

root.mainloop()

Jere Sumell [23.06.2021 15:39:06]

#

Olet näkojaan profiloitunut näihin talousalan ohjelmoistoihin täällä ohjelmointiputkassa.

Onko sinulla kenties jotain taloustieteily-taustaa, vai oletko valmistunut ekonomiksi, niin osaatko kertoa onko tuo huoltotaseen jokin virallinen laskentakaava, että se muodostuisi kokonaistarjonnan ja kysynnän erotuksen ollessa tasan 0. Näinhän varmaan käytännossä ei ole koskaan millään markkinoiden osa-alueella, niin pitäisiko ottaa jokin 95% luottamusväli käyttoon tai en tiedä, onko ekonomeilla jotain tarkempia laskentakaavoja tähän, joihin otetaan jokin kerroin jostain ajankohtaisista valtiontalouden tunnusluvuista.

Jos ajattelee jotain rahan liikkeitä, valtiontaloutta, niin inflaatiotahan esiintyy, ja se on jossain määrin tervettä johonkin pisteeseen asti, joskin nyt on Suomen pankkikin ennustanut lähitulevaisuudessa inflaation kasvavan, joka on aika korkealla se arvio mielestäni.

Inflaatio hyvä esimerkki tästä, kun sehän syntyy juuri siitä, kun talouden kehitys on vauhdikkaampaa, mitä sitten taas ansiotulojen tyossakäyvien ansiotason nousu, jolloin yksityiskuluttajien markkinoilla oleva ostovoima ei kuitenkaan nouse samassa vauhdissa talouden kehityksen kanssa. Ideaalitilanne lienee jossain 0 ja 0,5% välimaastossa, mutta ei sekään koskaan ole absoluuttisesti täysin 0,että kasvukäyrät olisi ykkosen korrelaatiokertoimella yhtäläiset.

En tiedä, kun hesarissa oli pari viikkoa sitten viikkolehdessä artikkeli vasemmiston suosimasta modern monetary theroyn kannattamisesta, mmt lyhenne, en ole siihen syvemmin perehtynyt, mutta artikkelissa oli jussi Saramon avustajana tyoskentelevä aiheesta väitoskirjan tehnyt valtio-opin tohtori.

Siinähän idea on se, että keskuspankit voisivat äärettomasti painaa markkinoille lisää rahaa ja laskea velkaa liikenteeseen, niin ei sekään ratkaise tuota kuluttajatason käytossa olevan ostovoiman lisääntymistä, kun raha, joka lasketaan liikkeelle, painuu entistä enemmän Suomea ajatellen vientivetoisille yrityksille, ja sitä kautta sinne, missä sitä jo on, eli se toisaalta ajaa punavihreänä maallikkotalous-ajattelijana lisää rasvaa rattaisiin niin kauan, kun tämä maailma toimii vapaan markkinatalousjärjestelmän ja markkinoiden ehdoilla. Yksistään se on tuhoisa tie, mitä Yhdysvallat voi jo tehdä sen keskuspankki, mutta siinä jotain suojaaviakin mekanismeja varmaan valtio käyttää talouspolitiikassaan, että inflaatio ei repeä käsistä jne.

No, ei mennä mmt -teoriaan enempää, kun en ole mikään asiantuntija, voitko selventää tuon huoltotaseen määritelmän, onko se jokin talousoppineiden virallinen termi ja kaava ja käytetäänko siinä tavallisesti jotain kerrointa, kun se käytännossa lasketaan kun tehdään arvioita esimerkiksi valtionvarainministerin tehtävänä on laatia budjettiesitys seuraavalle vaalikaudelle, niin varmaan laskee jotain näitä juuri.

Grez [23.06.2021 15:58:37]

#

Jere Sumell kirjoitti:

huoltotaseen jokin virallinen laskentakaava, että se muodostuisi kokonaistarjonnan ja kysynnän erotuksen ollessa tasan 0. Näinhän varmaan käytännossä ei ole koskaan millään markkinoiden osa-alueella

Häh, siis ihan huoltotaseen määritelmän mukaan se (eli kokonaistarjonnan ja -kysynnän erotus) on aina tasan 0 (kaikilla markkinoiden osa-alueilla).

Jere Sumell [23.06.2021 18:43:16]

#

Tuotti itselleni epäselvyyksiä tuo "huoltotase" -termi. Pitänee katsoa hakukoneesta.

neosofta [23.06.2021 18:57:35]

#

hakuun


Huoltotase on kansantalouden kokonaistarjonnan ja kokonaiskysynnän tase. Siitä näkyy, mihin kansantalouden hyödykkeet on käytetty sekä mistä ne ovat peräisin. Sen rakenne on seuraavanlainen:

Bruttokansantuote (eli Y)
+ Tuonti (eli M)
= Kokonaistarjonta

Kulutus (yksityinen ja julkinen) (eli C ja G)
+ Investoinnit (yksityinen ja julkinen) (eli I)
+ Vienti (eli X)
+ Varastojen muutos
= Kokonaiskysyntä

Huoltotase voidaan esittää siis muodossa: Y + M = C + G + I + X
Kokonaiskysyntä ja kokonaistarjonta ovat aina tasapainossa. Mikäli näin ei ole, tasaus tehdään varastojen muutoksella (eli siis kynällä 😁)

Metabolix [23.06.2021 22:46:15]

#

Koodin osalta taas samoja huomioita kuin ennenkin viime vuoden kuluessa:

Muuttujat pitäisi nimetä järkevästi. Esimerkiksi var1–var8, label1–6, syöte ja tiedot eivät ole järkeviä muuttujien nimiä siinä vaiheessa, kun näillä asioilla on jokin selvästi määritelty merkitys.

Listaa ei tarvitse alustaa, jos se kuitenkin seuraavalla rivillä korvataan uudella listalla.

Jere Sumell kirjoitti:

Onko sinulla kenties jotain taloustieteily-taustaa, vai oletko valmistunut ekonomiksi,

Tästä kuten aiemmistakin koodeista näkee, että ei taida olla mitään asiaan liittyvää taustaa vaan on taas kopioitu Wikipediasta muutama kaava ja väännetty niistä 100 riviä järjetöntä koodia ohjelmaksi, jolla ei oikeasti tee mitään.

Esimerkiksi tässäkin koodissa:

#Lasketaan BKT lopputuotemenetelmällä.
bkt = sum(tiedot[0:3])+(tiedot[3]-tiedot[4])

#Näytetään samalla kokonaiskysyntä ja kokonaistarjonta.
#Kysynnän ja tarjonnan täytyy olla yhtä suuria.
tarjonta = bkt+tiedot[4]

kysynta = sum(tiedot[0:4])
varastot = 0.0
if (tarjonta != kysynta):
 varastot = tarjonta-kysynta
 varastot = round(varastot*100)/100.0

Tuosta kun hieman järjestetään uudestaan lausekkeita, voidaan todeta, että lopputulos on itse asiassa tämä:

kysynta = tarjonta = sum(tiedot[0:4])
tuonti = tiedot[4]
bkt = tarjonta - tuonti
varastot = 0.0

Tässä näkyy myös, miten koodari ei ole taas ymmärtänyt, mitä koodaa. Käytetty BKT:n laskukaava suoraan sisältää oletuksen, että varastojen muutos on nolla. Sitä on turha tarkastaa if-lauseella. Selvyyden vuoksi käänsin yllä laskut toiseen järjestykseen, josta näkee, että tässä nimenomaan asetetaan kysyntään ja tarjontaan sama luku.

Jos BKT tulisi datasta eikä laskuista, voisi olla tilanne, jossa tarjonta (bkt + tuonti) ja kysyntä (kulutus, investoinnit, vienti) täytyisi tasapainottaa varastojen muutoksella, kuten neosofta tekstiä ansiokkaasti lainasi Wikipedian Huoltotase-artikkelista.

Esimerkki: Jos Petteri leipoo kolme pullaa mutta myy vain kaksi pullaa, hänelle jää yksi pulla varastoon. Toisaalta sitten jos suoraan määritellään (kuten koodissa tehtiin), että Petteri leipoo yhtä monta pullaa kuin myy, niin silloin määritelmään sisältyy tieto, että pullan määrä varastossa ei muutu.

Ei tämä ole mitään syvällistä taloustiedettä vaan ihan selvää yhteenlaskua.

Toistan edellisessä ketjussa esittämäni näkemyksen: koodarin kannattaisi nyt tehdä sellaisia koodeja, joiden merkityksen edes itse ymmärtää. Lisäksi koodissa pitäisi olla järkevä fokus: Tässäkin koodia on 112 riviä mutta otsikon mukaista asiaa (BKT ja huoltotase) käsittelee oikeasti enintään 12 riviä, joten asiasta saisi paremmin selvää, jos mukana ei olisi tuota epäselvää käyttöliittymäkoodia vaan olisi pelkästään otsikon mukaiseen asiaan liittyvät funktiot selvillä muuttujien nimillä. Näitä Tk-viritelmiä on nähty nyt jo monta kymmentä, joten ei tarvita enempää.

Jere Sumell [24.06.2021 08:27:08]

#

neosofta kirjoitti:

Huoltotase voidaan esittää siis muodossa: Y + M = C + G + I + X
Kokonaiskysyntä ja kokonaistarjonta ovat aina tasapainossa. Mikäli näin ei ole, tasaus tehdään varastojen muutoksella (eli siis kynällä 😁)

Kiitos kouluttavasta vastauksesta. Taas tuli uutta opittua! Huoltotase oli uusi termi itselleni, ja käsitin sen aluksi väärin, mutta hienoa, että katsoit hakukoneella puolestani, ja lisäsit Wikipediasta infoa tänne putkakeskusteluun.

Varaston muutos kynällä. Taseen korjaus nollatulokseen siis lisäämällä tilikirjan jommalle kummalle tilien puolille punakuulakärkikynän arvoko.

No, ymmärsin kyllä viitteen, että kynällä, ei tällä tietokoneohjelmalla, joka täällä on esitetty, kuten Metabolix kommentoikin, että viestin avaajan lähdekoodi on sekavaa.

Kaikella kunnioituksella, ja ketään syrjimättä, mutta tuo koodisi ei vaikuta kovinkaan uudelleenkäytettävältä. Siitä tuli varmaan tuo neosoftan hymio tuossa "eli siis kynällä", käsitin sen viitaten ironisesti siihen, että huoltotaseen tasausta ei lasketa tällä ohjelmalla.

Koodaaja, sinulla on tuossakin koodissa taas rakenteinen ohjelmointi -paradigma syvästi läsnä, mitä aiemmissakin koodeissasi kommentoin. Konsepti esiteltiin maailmalle 1966, jolloin tietokoneet alkoivat siirtymään koko huoneen kokoisista verrattain tehottomista laitoksista vähän siedettävämpiin koko luokkiin, joskaan ei vielä 1966 vuonna. Vaikka tuossa on tuo laske -metodi, niin koodirivejä on niin monta, ja epäselvyyksiä tuottaa ymmärtää, mitä metodi oikeastaan tekee, että olisi hyvä, jos ennen metodia olisi kommentoituna vaikka metodin tehtävä, alku- ja lopetusehdot.

Mielestäni kannattaa keskittyä koodijulkaisussa mahdollisimman helposti muidenkin ihmisten ymmärrettäviin koodeihin, ja keskittyä olennaiseen ja unohtaa käyttoliittymien sekoittaminen koodiesimerkki -julkaisuihin.

muuskanuikku [24.06.2021 09:54:09]

#

Jere Sumell kirjoitti:

Kaikella kunnioituksella, ja ketään syrjimättä, mutta tuo koodisi ei vaikuta kovinkaan uudelleenkäytettävältä. Siitä tuli varmaan tuo neosoftan hymio tuossa "eli siis kynällä", käsitin sen viitaten ironisesti siihen, että huoltotaseen tasausta ei lasketa tällä ohjelmalla.

Ei se ollut ironiaa. Jos kassan ohi on kadonnut tavaraa – esimerkiksi sitä on varastettu tai toimituksesta on uupunut yksittäisiä kappaleita – niin sitä ei saada takaisin, eikä katoamista voi mitenkään erityisesti laskea. Silloin on käsipelillä korjattava tietokoneella oleva luku vastaamaan sitä lukumäärää, mikä varastossa on tavaraa jäljellä.

Jere Sumell [24.06.2021 12:27:10]

#

muuskanuikku kirjoitti:

Ei se ollut ironiaa. Jos kassan ohi on kadonnut tavaraa – esimerkiksi sitä on varastettu tai toimituksesta on uupunut yksittäisiä kappaleita – niin sitä ei saada takaisin, eikä katoamista voi mitenkään erityisesti laskea. Silloin on käsipelillä korjattava tietokoneella oleva luku vastaamaan sitä lukumäärää, mikä varastossa on tavaraa jäljellä.

Hyvä että tuli tämäkin korjatuksi. Varaston inventaarin tekijöiden vastuulle jää, pitää olla tarkka.

jalski [24.06.2021 18:33:52]

#

Jere Sumell kirjoitti:

Koodaaja, sinulla on tuossakin koodissa taas rakenteinen ohjelmointi -paradigma syvästi läsnä, mitä aiemmissakin koodeissasi kommentoin. Konsepti esiteltiin maailmalle 1966, jolloin tietokoneet alkoivat siirtymään koko huoneen kokoisista verrattain tehottomista laitoksista vähän siedettävämpiin koko luokkiin, joskaan ei vielä 1966 vuonna. Vaikka tuossa on tuo laske -metodi, niin koodirivejä on niin monta, ja epäselvyyksiä tuottaa ymmärtää, mitä metodi oikeastaan tekee, että olisi hyvä, jos ennen metodia olisi kommentoituna vaikka metodin tehtävä, alku- ja lopetusehdot.

Onko sinulla jotain rakenteellista ohjelmointia vastaan? Eihän se nyt itsessään terminä mitään spagetti koodia tarkoita. Proseduraalisella ohjelmointikielellä pystyy kirjoittamaan aivan yhtä siistiä koodia kuin oliopohjaisella ohjelmointikielelläkin ja monesti jopa luettavampaa. Itse en ole ymmärtänyt miksi kaiken pitäisi olla luokkia... Loppupeleissä kuusikymmentäluvun jälkeen on tullut aika vähän ohjelmointia mullistavia innovaatioita.

Jere Sumell [25.06.2021 18:25:08]

#

jalski kirjoitti:

Onko sinulla jotain rakenteellista ohjelmointia vastaan?

Ei minulla rakenteista ohjelmointia vastaan mitään ole, en sillä sitä tarkoittanut, kunhan totesin ohimennen.

Onhan totta puhuen olio-ohjelmoinnissakin rakenteisen ohjelmoinnin piirteitä, ja myos esimerkiksi tietotyypin toteutuksessa set-metodit ovat proseduureja, koska ne ei palauta mitään arvoa, eli myos proseduraalista ohjelmointia.


Sivun alkuun

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta