Hopp til innhald
Øvelse

Python-simulator for klimatiltak

Denne programmeringsoppgåva går ut på å finne klimatiltak vi kan setje i verk for å bremse den globale oppvarminga og klimakrisa. Her skal du legge inn valfrie klimatiltak og late programmet rekne ut korleis dei påverkar verda dei neste 30 åra.

Tiltak mot klimakrisa

Klimakrisa gjer at verda står overfor ei enorm utfordring. Vi blir bombarderte dagleg med nyheiter, tips, tal og statistikk om verda i dag og i framtida, og om kva vi kan gjere. Det er lett å bli handlingslamma når vi stadig blir overauste med nye tal og dystre varsel. Føremålet med programmet du skal lage no, er å gi deg (og den som bruker programmet ditt) litt betre oversikt over kva som kan gjerast, og kva konsekvensar det vil ha.

I programmet skal du legge inn valfrie klimatiltak og late programmet vise korleis klimatiltaka dine påverkar verda dei neste 30 åra. Fellesnemnaren for samanhengen mellom tiltak og konsekvensar er CO2-mengd. Med andre ord: Kor mykje vil tiltaket redusere CO2-utsleppa, og kor mykje vil faktorar som temperatur, havnivå og klimaflyktningar bli påverka av dette?

Data, føresetnader og kjelder

Set i verk tiltak som ein verdsherskar

Programmet legg opp til at brukaren er ein slags verdsherskar som kan vedta eit tiltak kvart femte år fram til 2045. Til slutt reknar programmet ut korleis resultatet blir i 2050.

Programkoden

Du kan sjå heile programmet under, men prøv å forstå kva kvar enkelt del gjer, før du skriv han inn i ditt eige program.

Etter programkoden ligg det ei meir detaljert forklaring til kvar del, så ta gjerne ein titt der viss det er noko i koden som er vanskeleg å forstå.

Viktig info før du køyrer programmet

Dersom du køyrer programmet under slik det er sett inn i Trinket, vil du berre få fram ein graf (ei avgrensing i Trinket). Vi tilrår derfor at du kopierer koden inn i eit Python-program som til dømes Spyder, slik at du får det fullstendige resultatet frå klimatiltaka dine. Då får du òg fordelen av å sjå koden og resultatet ved sida av kvarandre.

Gjer eigne tilpassingar i programmet

Når du har fått programmet til å fungere, kan du prøve å finne andre tiltak på Drawdown-nettsida og legge dei til i tiltakslista. Du kan òg endre programmet slik at brukaren kan setje i verk tiltak oftare, til dømes kvart andre år. (Hugs i så fall å legge til fleire tiltak først, slik at brukaren har nok å velje mellom.)

Når du har endra programmet slik du ønsker, kan du få ein medelev til å køyre programmet og sjå om hen klarer å finne dei beste tiltaka.

Bit for bit med forklaring

Vi ser no på dei ulike delane programmet er bygt opp av. Viss du alt har forstått kva heile koden gjer, treng du ikkje å lese dette.

Klipp frå klimaprogrammet

Dei følgande kodeeksempla er berre utdrag av klimasimulatoren over og blir følgde av forklaringar. Desse gir ingen resultat om du køyrer dei separat.

Tiltaksliste
lagar ei liste med alle tiltaka. Alle partal (og 0) i listeindeksen er tiltaksnamn, og alle tilhøyrande verdiar står på oddetalsplassane.
Spartliste
er ei tom liste som blir fylt med tal når brukaren vel tiltak.
TempSluttAr
er prognosen for 2050.
Flyktningar
er prognosen for kor mange som blir klimaflyktningar på grunn av havstiging fram mot 2050.
CO2prAr
er prognosen for kor mykje CO2-utsleppet vil auke fram mot 2050.

For-lykkjer og tiltak

For-lykkja begynner i år 2020 (30 år før 2050) og minkar med 5 kvar gong ho køyrer, heilt til ho kjem til 0, som då er år 2050.

Inne i den første lykkja blir det køyrt ei ny lykkje som viser moglege tiltak som kan setjast i verk. Denne er laga i ei lykkje fordi vi berre ønsker å skrive ut namnet på tiltaket, og ikkje verdien. (Du hugsar kanskje at tiltaksnamn låg på partalsplassane i Tiltaksliste? Det nyttar vi oss av no.)

Tiltak er ein variabel som brukaren skriv inn (nummeret på tiltaket hen ønsker å setje i verk). Dette nummeret gjer vi om til eit indeksnummer (første indeks er 0), og så legg vi til den tilhøyrande verdien i Spart-lista vår.

del betyr Delete, og det som skjer her, er at tiltaket blir fjerna frå Tiltaksliste, slik at brukaren ikkje kan setje i verk det same tiltaket fleire gonger.

Resultat

Vi har no kome så langt at vi ønsker å skrive ut resultatet av tiltaka til brukaren. Vi startar med grafane.

np.cumsum er ein funksjon som ligg i Numpy, og som summerer tala i ei liste (legg indeks 0 til indeks 1, deretter indeks 1 til indeks 2, osb.). Dette gjer vi fordi tiltaka vi set i verk, skal vare heilt til år 2050. Dei stoppar ikkje opp når vi set i verk nye tiltak.

I Kum2 gjer vi summeringa éin gong til for å lage ein graf som viser summen av alle innsparingar i heile 30-årsperioden, og ikkje kor mykje som er spart kvart femte år.

Sidan vi skal lage fleire grafar med same verdiar på x-aksen, lagar vi ei liste som heiter xliste, slik at vi slepp å skrive inn desse verdiane for kvar graf.

MaxCO2list er verdiane på y-aksen. Sidan utsleppa skal auke med anslagsvis 50 gigatonn CO2 kvart år, må dette talet gongast med talet på år som har gått.

plt.title er namnet på figuren.

plt.xlabel og plt.ylabel er namna på høvesvis x-aksen og y-aksen.

ax1.plot er sjølve grafteikninga. Ho angir først kva tal vi vil bruke på x-aksen, og deretter tala på y-aksen. Viss vi ønsker det, kan vi legge til label= for å gi grafen eit namn.

Vi legg til "%.2f" % for å endre måten Python skriv ut tal på. I dette tilfellet ønsker vi 2 desimalar.

Tilbakemelding ved hjelp av if og else

Til slutt ønsker vi å gi ei tilbakemelding til brukaren om hen gjorde gode val. Viss spart CO2-utslepp er større enn 256,7 gigatonn CO2, får brukaren beskjed om at hen har teke dei beste vala. Dersom hen ikkje har gjort optimale val, får hen ein annan beskjed (else blir skrive ut dersom kravet til if ikkje er innfridd).

Døme på tilbakemelding

"Gratulerer! Du klarte å redusere forventa utslepp med 255.66 gigatonn CO2. Temperaturen steig berre med 1,66 grader, og 18,75 millionar menneske kan takke deg for at dei ikkje har blitt klimaflyktningar!

Bra forsøk! Du valde godt, men det fanst meir effektive tiltak."

Skrive av Eirik Farestveit Erstad og Kristin Bøhle.
Sist fagleg oppdatert 15.08.2023