Skip to content
Exercise

Python-simulator for klimatiltak

Denne programmeringsoppgaven går ut på å finne klimatiltak vi kan iverksette for å bremse den globale oppvarmingen og klimakrisa. Her skal du legge inn valgfrie klimatiltak og la programmet regne ut hvordan de påvirker verden de neste 30 årene.

Tiltak mot klimakrisa

Klimakrisa gjør at verden står overfor en enorm utfordring. Vi bombarderes daglig med nyheter, tips, tall og statistikk om verden i dag og i framtida, og om hva vi kan gjøre. Det er lett å bli handlingslammet når vi til stadighet overøses med nye tall og dystre varsler. Hensikten med programmet du skal lage nå, er å gi deg (og den som bruker programmet ditt) litt bedre oversikt over hva som kan gjøres, og hvilke konsekvenser det vil ha.

I programmet skal du legge inn valgfrie klimatiltak og la programmet vise hvordan klimatiltakene dine påvirker verden de neste 30 årene. Fellesnevneren for sammenhengen mellom tiltak og konsekvenser er CO2-mengde. Med andre ord: Hvor mye vil tiltaket redusere CO2-utslippene, og hvor mye vil faktorer som temperatur, havnivå og klimaflyktninger bli påvirket av dette?

Data, forutsetninger og kilder

Iverksett tiltak som en verdenshersker

Programmet legger opp til at brukeren er en slags verdenshersker som kan vedta et tiltak hvert femte år fram til 2045. Til slutt regner programmet ut hvordan resultatet blir i 2050.

Programkoden

Du kan se hele programmet under, men prøv å forstå hva hver enkelt del gjør, før du skriver den inn i ditt eget program.

Etter programkoden ligger det en mer detaljert forklaring til hver del, så ta gjerne en titt der hvis det er noe i koden som er vanskelig å forstå.

Viktig info før du kjører programmet

Hvis du kjører programmet under slik det er satt inn i Trinket, vil du kun få fram en graf (en begrensning i Trinket). Vi anbefaler derfor at du kopierer koden inn i et Python-program som for eksempel Spyder, slik at du får det fullstendige resultatet fra klimatiltakene dine. Da får du også fordelen av å se koden og resultatet ved siden av hverandre.

Gjør egne tilpasninger i programmet

Når du har fått programmet til å fungere, kan du prøve å finne andre tiltak på Drawdown-nettsiden og legge dem til i tiltakslista. Du kan også endre programmet slik at brukeren kan iverksette tiltak oftere, for eksempel hvert andre år. (Husk i så fall å legge til flere tiltak først, slik at brukeren har nok å velge mellom.)

Når du har endret programmet slik du ønsker, kan du få en medelev til å kjøre programmet og se om hen klarer å finne de beste tiltakene.

Bit for bit med forklaring

Vi ser nå på de ulike delene programmet er bygd opp av. Hvis du alt har forstått hva hele koden gjør, trenger du ikke å lese dette.

Klipp fra klimaprogrammet

De følgende kodeeksemplene er kun utdrag av klimasimulatoren over og følges av forklaringer. Disse gir ingen resultater om du kjører dem separat.

Tiltaksliste
lager en liste med alle tiltakene. Alle partall (og 0) i listeindeksen er tiltaksnavn, og alle tilhørende verdier står på oddetallsplassene.
Spartliste
er en tom liste som fylles med tall når brukeren velger tiltak.
TempSluttAr
er prognosen for 2050.
Flyktninger
er prognosen for hvor mange som blir klimaflyktninger på grunn av havstigning fram mot 2050.
CO2prAr
er prognosen for hvor mye CO2-utslippet vil øke fram mot 2050.

For-løkker og tiltak

For-løkka begynner i år 2020 (30 år før 2050) og minker med 5 hver gang den kjører, helt til den kommer til 0, som da er år 2050.

Inne i den første løkka kjøres det ei ny løkke som viser mulige tiltak som kan iverksettes. Denne er lagt i ei løkke fordi vi bare ønsker å skrive ut navnet på tiltaket, og ikke verdien. (Du husker kanskje at tiltaksnavn lå på partallsplassene i Tiltaksliste? Det benytter vi oss av nå.)

Tiltak er en variabel som brukeren skriver inn (nummeret på tiltaket hen ønsker å iverksette). Dette nummeret gjør vi om til et indeksnummer (første indeks er 0), og så legger vi til den tilhørende verdien i Spart-lista vår.

del betyr Delete, og det som skjer her, er at tiltaket blir fjernet fra Tiltaksliste, slik at brukeren ikke kan iverksette det samme tiltaket flere ganger.

Resultat

Vi er nå kommet så langt at vi ønsker å skrive ut resultatet av tiltakene til brukeren. Vi starter med grafene.

np.cumsum er en funksjon som ligger i Numpy, og som summerer tallene i en liste (legger indeks 0 til indeks 1, deretter indeks 1 til indeks 2, osv.). Dette gjør vi fordi tiltakene vi iverksetter, skal vare helt til år 2050. De stopper ikke opp når vi iverksetter nye tiltak.

I Kum2 gjør vi summeringen én gang til for å lage en graf som viser summen av alle besparelser i hele 30-årsperioden, og ikke hvor mye som er spart hvert femte år.

Siden vi skal lage flere grafer med samme verdier på x-aksen, lager vi en liste som heter xliste, slik at vi slipper å skrive inn disse verdiene for hver graf.

MaxCO2list er verdiene på y-aksen. Siden utslippene er anslått å øke med 50 gigatonn CO2 hvert år, må dette tallet ganges med antall år som har gått.

plt.title er navnet på figuren.

plt.xlabel og plt.ylabel er navnene på henholdsvis x-aksen og y-aksen.

ax1.plot er selve graftegningen. Den angir først hvilke tall vi vil bruke på x-aksen, og deretter tallene på y-aksen. Hvis vi ønsker det, kan vi legge til label= for å gi grafen et navn.

Vi legger til "%.2f" % for å endre måten Python skriver ut tall på. I dette tilfellet ønsker vi 2 desimaler.

Tilbakemelding ved hjelp av if og else

Til slutt ønsker vi å gi en tilbakemelding til brukeren om hen gjorde gode valg. Hvis spart CO2-utslipp er større enn 256,7 gigatonn CO2, får brukeren beskjed om at hen har tatt de beste valgene. Dersom hen ikke har gjort optimale valg, får hen en annen beskjed (else skrives ut dersom kravet til if ikke er innfridd).

Eksempel på tilbakemelding

"Gratulerer! Du klarte å redusere forventet utslipp med 255.66 gigatonn CO2. Temperaturen steg bare med 1,66 grader, og 18,75 millioner mennesker kan takke deg for at de ikke er blitt klimaflyktninger!

Bra forsøk! Du valgte godt, men det fantes mer effektive tiltak."

CC BY-SA 4.0Written by: Eirik Farestveit Erstad and Kristin Bøhle.
Last revised date 08/15/2023