Kursnotater for tema som er nye i denne laben:

Gruppeaktivitet

Denne oppgaven innebærer fysisk oppmøte i gruppetimen din. Du vil få 5 poeng godkjent ved å delta aktivt i gruppeaktiviteten.

Hei

I filen hei.py, skriv kode som produserer akkurat følgende output i terminalen:

Hei, det er meg, datamaskinen.
Hyggelig å se deg her.
Lykke til med INF100!
Ny sparekonto

I denne oppgaven skal vi gjøre endringer i filen bankdata.json. Begynn med å laste den ned i arbeidsmappen din. Filen representerer en forenklet versjon av informasjonen en bank må lagre om en av sine kunder.

Ola Nordmann ønsker å opprette en ny sparekonto som han vil kalle «neste ferie». Den nye sparekontoen vil få samme rente som den eksisterende sparekontoen.

Endre filen slik at den nye sparekontoen legges til. Den nye kontoen får i denne omgang en saldo på 0 kroner. Du kan velge hvilket kontonummer du selv ønsker (men selvfølgelig kan det ikke være det samme som et av det andre kontonummerne).

Addisjonskalkulator

Forberedeleser: les kursnotatene for å komme i gang, særlig avsnittet om å lese input fra terminalen.

I filen addition.py, be brukeren om 2 tall, og skriv ut summen av tallene. Eksempelkjøring:

Oppgi et tall:
2
Oppgi et tall til:
3
Summen av tallene er 5
Addisjonskalkulator (json)

Forberedeleser: les kursnotatene for å komme i gang.

I filen addition_json.py skal du lese 2 tall fra en json-fil addisjon.json og printe summen av de tallene. For eksempel med denne json-filen:

{
  "tall1": 2,
  "tall2": 3
}

Så skal du få følgende output:

Summen av tallene er 5
Totale innskudd

I denne oppgaven skal vi lage et program innskudd.py som leser innholdet fra filen bankdata.json. Input-filen representerer en forenklet versjon av informasjonen en bank må lagre om en av sine kunder. Programmet skal regne ut det totale innskuddet i banken på begge kontoer.

Opprett filen innskudd.py og kopier inn programmet under

from pathlib import Path
import json

content = Path('bankdata.json').read_text(encoding='utf-8')
data = json.loads(content)

name = data['personalia']['navn']
value = data['konti'][0]['saldo']

print(f"{name} har {value} kroner i innskudd")

Sjekk at når du kjører programmet, får du utskriften «Ola Nordmann har 15000.5 kroner i innskudd» i terminalen (feilmelding allerede? se hint nederst). Dette er selvfølgelig en logisk feil; beløpet inkluderer jo ikke pengene som står på sparekontoen. Det leder oss til selve oppgaven:

Endre på programmet slik at utskriften bli riktig (altså «Ola Nordmann har 65000.5 kroner i innskudd» i vårt eksempel).

Når du laster opp besvarelsen din, skal du kun laste opp innskudd.py. I testene på CodeGrade vil vi prøve programmet ditt med ulike bankdata.json -filer, og det du skriver ut må alltid være summen av innskuddene. Du kan for enkelhets skyld anta at det alltid vil være nøyaktig to konti (senere i emnet skal vi lære om løkker, som vil gjøre det mulig å finne ut dette for et vilkårlig antall konti).

Hvis du får feilmeldingen FileNotFoundError: [Errno 2] No such file or directory: 'bankdata.json' tyder det på at programmet leter etter filen bankdata.json i feil mappe. En liten forklaring:

  • Når Python startes, settes det alltid en verdi som kalles current working directory, også kalt cwd. Denne verdien representerer en mappe på datamaskinen din.
  • Kodelinjen Path('bankdata.json').read_text(encoding='utf-8') forsøker å lese inneholdet i filen bankdata.json. Den leter etter filen i cwd. Hvis filen ikke ligger i cwd, krasjer programmet.

Det er i prinsippet to løsninger: enten må vi flytte bankdata.json til cwd, eller så må vi endre cwd til den mappen hvor bankdata.json ligger. Den beste løsningen er den siste (altså å endre cwd til den mappen hvor bankdata.json ligger).

Hvordan bestemmes cwd? Dette bestemmes av programmet som sparker i gang Python. Når vi jobber i VSCode og trykker på «play» -knappen for å starte, vil Python overta samme cwd som VSCode. Denne mappen er arbeidsmappen din VSCode. For å endre arbeidsmappe i VSCode, velg File -> Open folder og velg den mappen hvor bankdata.json ligger (vi anbefaler for eksempel at du har en egen mappe for lab1).

Twistdeling

Du og vennene dine har vert med i en quiz og har vunnet en pose med twist. På posen står det hvor mange biter det er i posen. Du vil finne ut hvor mange biter som er til overs når alle på laget har fått like mange biter.

I filen twist.py, skriv kode som ber brukeren om å oppgi hvor mange biter det er i posen, og hvor mange dere er på laget. Programmet skal så skrive ut hvor mange biter hver av dere får, og hvor mange biter som blir til overs. Pass på å skrive ut svaret slik som eksempelet viser.

Eksempelkjøring:

Hvor mange er dere på laget?
4
Hvor mange twist er det i posen dere vant?
21
Det blir 5 twist til hver, og det blir 1 twist til overs.

Les om heltallsdivisjon og modulo i notatene om operatorer.

Lengste passord

Per, Kari og Nora har en konkurranse der det er om å gjøre å finne på det lengste passordet. De skriver ned passordene sine i en JSON-fil passwords.json. Din jobb er å skrive et program longest_password.py som forteller hvor langt det lengste passordet er. For eksempel, hvis passwords.json ligger i arbeidsmappen din og ser slik ut:

{
  "people": [
    {
      "user": "Per",
      "password": "YouWontGuessThisOne"
    },
    {
      "user": "Kari",
      "password": "whydoialwaysforget"
    },
    {
      "user": "Nora",
      "password": "MyPreciousssPasssword"
    }
  ]
}

da skal programmet skrive ut

21

til skjermen, siden det lengste passordet (Nora sitt) har 21 bokstaver i seg. Du kan anta at det alltid vil være akkurat tre personer i JSON-filen.

Avstand mellom to punkter

I filen distance.py, skriv kode som ber brukeren om to punkter i et koordinatsystem, og som regner ut avstanden mellom de to punktene. Programmet skal så skrive ut avstanden mellom punktene til terminalen.

Du kan anta at brukeren alltid vil oppgi koordinat-verdiene som heltall (det er altså helt greit hvis programmet ditt krajser hvis brukeren oppgir noe annet).

  1. Spør brukeren om x-koordinaten til første punkt. Lagre resultatet i en ny variabel.
  2. Spør brukeren om y-koordinaten til første punkt. Lagre resultatet i en ny variabel.
  3. Spør brukeren om x-koordinaten til andre punkt. Lagre resultatet i en ny variabel.
  4. Spør brukeren om y-koordinaten til andre punkt. Lagre resultatet i en ny variabel.
  5. Regn ut avstanden mellom de to punktene, og lagre resultatet i en ny variabel.
  6. Skriv ut avstanden mellom punktene til terminalen.

En kjøring av programmet kan se slik ut (brukerens input er markert med fet skrift):

x1 = 1
y1 = 2
x2 = 3
y2 = 4
Avstanden mellom (1, 2) og (3, 4) er 2.8284271247461903

For å regne ut avstanden mellom to punkter, kan du bruke formelen

Illustrasjon av avstandsformelen d=sqrt((x1-x2)^2 + (y1-y2)^2)

Husk å omgjøre strengen du får fra brukeren til et flyttall før du gjør noen matematiske utregninger.

Eksponentiering/potenser i Python:

result = 3 ** 2
print(result) # 9 

Husk også at å opphøye i 0.5 er det samme som kvadratrot

result = 9 ** 0.5
print(result) # 3.0
Nærmeste busstopp

Byen Veiby består av én uendelig lang gate som heter «Byveien». Alle husene i byen har et husnummer, og det første huset er i nummer 0. Infrastrukturavdelingen i Veiby kommune har bestemt at det skal finnes et busstopp ved hvert husnummer som er delelig med 7. Det er altså busstopp ved husnummer 0, 7, 14, 21, 28 og så videre.

I filen busstop.py, skriv et program som ber brukeren om et husnummer, og som skriver ut nummeret til nærmeste busstopp.

Eksempelkjøring 1:

Husnummer:
16
Nærmeste busstopp er ved nummer 14

Eksempelkjøring 2:

Husnummer:
22
Nærmeste busstopp er ved nummer 21

Eksempelkjøring 2:

Husnummer:
139
Nærmeste busstopp er ved nummer 140

Det er ikke nødvendig å bruke if-setninger eller løkker for å løse denne oppgaven. Det er fullt mulig å løse den ved vanlig aritmetikk (se kursnotatene om operatorer).

  • Legg merke til at busstopp-nummer x befinner seg ved husnummer 7 * x. Så hvis vi bare klarer å finne ut hva busttopp-nummeret x er, så er det lett å regne seg frem til husnummeret vi skal skrive ut.

Fargemix

Koden i denne filen skal skrives i filen fargemix.py.

I denne oppgaven skal du ikke benytte deg av streng-operasjoner som beskjæring (slicing) eller indeksering. Du skal heller ikke benytte deg av lister, løkker eller if-setninger. Du kan derimot bruke de matematiske operatorene +, -, *, /, // (heltallsdivisjon) og % (modulo) og den innbygde funksjonen for avrunding round().

En farge kan representeres som en RGB -verdi (les mer i avsnittet om farger i notatene om grafikk). En RGB-verdi består av tre heltall mellom 0 og 255, som representerer mengden av rød, grønn og blå farge i fargen. For eksempel er fargen rød representert som (255, 0, 0), fargen grønn er representert som (0, 255, 0), og fargen blå er representert som (0, 0, 255). Vi kan representere andre farger ved å blande disse tre fargene sammen i ulike blandingsforhold, for eksempel (255, 128, 0) gir en oransje farge.

I denne oppgaven bruker vi en litt utradisjonell representasjon for RGB: vi representerer hver farge som ett heltall med (opptil) ni siffer. De tre første sifrene representerer mengden rød farge, de tre neste sifrene representerer mengden grønn farge, og de tre siste sifrene representerer mengden blå farge. For eksempel er fargen rød representert som tallet 255000000, fargen grønn er representert som tallet 000255000 (eller bare 255000), og fargen oransje er representert som tallet 255128000.

Oppgaven vi skal utføre er å blande sammen to farger. Programmet skal lese følgende tre verdier fra en json-fil farger.json:

  • en farge colA i formatet beskrevet over
  • en farge colB i formatet beskrevet over
  • et flyttall rationB mellom 0.0 og 1.0 som beskriver hvor stor andel av colB som skal være i den nye fargen. For eksempel, hvis colA er rød og colB er grønn, og rationB er 0.75, skal den nye fargen være en blanding av 25% rød og 75% grønn.

Programmet skal så regne ut den nye fargen som oppstår når de to fargene blandes sammen, og skrive ut den nye fargen til terminalen på en egen linje. Under ser du eksempler på json-filer med tilhørende output.

{
  "colA": 255000000,
  "colB": 255255000,
  "rationB": 0.25
}

255064000
Illustrasjon av eksempel over
{
  "colA": 255000000,
  "colB": 255255000,
  "rationB": 0.75
}

255191000
Illustrasjon av eksempel over
{
  "colA": 200198000,
  "colB": 100190100,
  "rationB": 0.25
}

175196025
Illustrasjon av eksempel over
  1. Bruk heltallsdivisjon og modulo for å separere ut verdiene for R, G og B for hver av de to fargene. PS: for å finne de siste tre sifrene i et tall kan du bruke % 1000.
  2. Regn ut de nye verdiene for R, G og B ved å blande sammen de to verdiene (for eksempel, hvis rationB er 0.25, skal den nye verdien for R være 0.75 * colA_R + 0.25 * colB_R).

Husk å runde av til nærmeste heltall. Til slutt:

  1. Regn ut den nye verdien ved å multiplisere R-verdien med 1000000 og så summere inn G multiplisert med 1000 og til slutt B.
Vitser fra internett

Før du gjør denne oppgaven, må du installere requests -modelen til Python. Dette er en modul som brukes for å laste ned data fra internett til Python-programmer.

For å installerer requests, kan du opprette et script install_requests.py og kopiere inn følgende:

import sys
from subprocess import run

package_name = 'requests'

run(f'{sys.executable} -m ensurepip'.split())
run(f'{sys.executable} -m pip install --upgrade pip'.split())
run(f'{sys.executable} -m pip install {package_name}'.split())

Kjør programmet. Hvis alt fungerer som det skal, vil du få informasjon om installsjonen var vellykket eller ikke i terminalen. Etter installasjonen kan du slette install_requests.py igjen hvis du vil.


I denne oppgaven skal vi se på et program som laster ned vitser i form av json-data fra internett.

Del A

Kopier følgende kode inn i en fil kalt jokes.py og prøv å kjøre det for å se hva som skjer.

import requests
from pathlib import Path
import json

# Hent en tilfeldig vits
resp = requests.get('https://official-joke-api.appspot.com/random_joke')
data = resp.json()

# Skriv ut intro og vitsens setup
print("Her kommer en tilfeldig vits!")
setup = data['setup']
print(setup)

input("Trykk enter for svaret...")

# Skriv ut punchline
punchline = data['punchline']
print(punchline)

# Spør brukeren om vurdering
rating = input("Hva synes du om vitsen? Skriv latteren din: ")  # f. eks. hahaha
laughter = len(rating)
print("Du syns vitsen var", laughter, "/ 10")

# TODO: Lagre vitsen i en JSON-fil
save_filename = "joke.json"

Det som gjenstår er å lagre vitsen til en json-fil lokalt på maskinen din. Pass på at filen heter joke.json. Json-objektet skal se slik ut:

{
  "setup": "What did the triangle say to the circle?",
  "punchline": "You're pointless"
}

Se på slutten av forelesningsnotatene om json.

Del B

Du skal også lagre ratingen din av vitsen sammen med vitsen. For dette må du legge til en verdi med nøkkel "rating" i joke_data før du lagrer filen til filsystemet. Når filen er lagret vil den for eksempel se slik ut:

{
  "setup": "What did the triangle say to the circle?",
  "punchline": "You're pointless",
  "rating": 0
}
Lånekalkulator kodesporing

Oppgaven baserer seg på at du har installert Python -utvidelsen til Visual Studio Code. Vi skal benytte oss av debugger-funksjonen som finnes i Visual Studio Code for å spore kode.

Begynn med å kopiere koden under til en fil som heter mortgage.py. Legg så denne filen inn i samme mappe som mortgage.py.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from pathlib import Path
import json
# This is a script that use Python to calculate monthly cost of a loan.

# Input
json_file = "loan_details.json"
content = Path(json_file).read_text(encoding="utf-8")
data = json.loads(content)

house_price = data["house_price"]
deductible = data["deductible"]
years = data["years"]
yearly_interest_rate_pct = data["yearly_interest_rate_pct"]
monthly_fee = data["monthly_fee"]


# Computation
loan = house_price - deductible
months = years * 12

yearly_rate = yearly_interest_rate_pct / 100
monthly_rate = yearly_rate / 12

discount_factor = (1 - (1 + monthly_rate) ** -months) / monthly_rate
monthly_term_amount = loan / discount_factor + monthly_fee
monthly_term_amount = round(monthly_term_amount, 2)


# Output
print(f'Monthly term amount: {monthly_term_amount}')
Oppvarming

I denne videoen ser input-delen litt annerledes ut fordi tallene ligger direkte i koden, men husk at du skal bruke json-filen i stedet slik koden over gjør. Ellers er koden den samme.

  • Kjør programmet og se hvor mye du må betale hver måned hvis du skal kjøpe en bolig til 2 millioner kroner, med 300 000 i egenkapital, 6.44% rente og 25 års nedbetalingstid. Sjekk f. eks. om det stemmer overens med lånekalkulatoren til Nordea.

  • Sett et breakpoint på linje 4 og kjør programmet i debug-modus. Klikk deg gjennom programmet linje for linje med «step over» -knappen, og observer hvordan variablene endrer seg underveis.

  • Økonomene sier du må ta hensyn til at renten stiger med fire prosentpoeng. Hva blir i så fall den månedlige kostnaden?

Selve oppgaveteksten

Endre json-filen slik at

  • huset koster 1.5 millioner,
  • egenkapitalen er 280 000,
  • renten er 7.5%, og
  • nedbetalingstiden er 30 år.

Hvilken verdi får variabelen discount_factor?

Ta et skjermbilde som du navngir discount_factor.png eller discount_factor.jpg. Bildet skal vise:

  • et skjermbilde av Visual Studio Code, der
  • debug-modus er aktivt, og
  • variabelen discount_factor med tilhørende verdi er synlig i variabel-vinduet.

Å ta et skjermbilde er en viktig life skill :)

Mac

  • Cmd + Shift + 4, trekk deretter en rute rundt det du vil ta bilde av. Skjermbilet lagres på skrivebordet ditt og kommer i .png -format. Så er det bare å endre navnet på filen og levere inn.

Windows 11

  • Søk etter applikasjonen «Snipping Tool», klikk på «New» og velg området du vil ta bilde av. Når du har valgt et område, velg «Save As» for å lagre (filtype png). Så er det bare å levere inn.

Det finnes mange alternative metoder, så spør gjerne internett om hjelp om du ikke får til akkurat denne.

Nå som du skal lære programmering er det også på tide at du blir en voksen datamaskinbruker og slår på visning av filendelser.

Mac:

  • Åpne Finder, velg «Settings» i menyen. Under «Advanced», velg «Show all filename extensions».

Windows:

  • Åpne Filutforskeren, gå til «View» -menyen, og under «Show» marker «File name extensions».

Robotjakt

Vi overvåker en flokk med selv-byggende roboter. Vi vet at i denne spesielle robot-flokken er det slik at for hver tiende robot, så vil det hvert år bli laget en ny robotbaby. For eksempel, hvis det er 97 roboter i flokken om våren, så vil det bli laget 9 robotbabyer den sommeren (siden 97 // 10 blir 9).

Siden robotene ikke går i stykker av seg selv, er den eneste måten å hindre eksponensiell vekst av roboter å avholde en regulert jakt hvert år. Fordi myndighetene er ekstremt tidlig ute, vet vi allerede nå hvor mange fellingstillatelser de vil gi de neste tre årene. Hvor mange roboter vil det være i flokken om tre år?

Her er et program som regner ut dette, men det har flere feil. Identifiser feilene og rett dem opp. Svaret leverer du i filen robot_hunt.py.

print('Hvor mange roboter er det nå?')
population = int(input())
hunting_licenses = [10, 7, 18]
year = 0

# Første år
population = population + population // 10  # til sommeren
population = population - hunting_licenses[year]  # til høsten
year = year + 1
print(f'Om {year} år er det {population} roboter i flokken')

# Andre år
population += population // 7
population -= hunting_licenses[year]
year += 1
print('Om {year} år er det {population} roboter i flokken')

# Tredje år
population += population + hunting_licenses[year]
population -= population // 10
year + 1
print(f'Om {year} år er det {population} roboter i flokken')

Forventet oppførsel for korrekt program:

Hvor mange roboter er det nå?
100
Om 1 år er det 100 roboter i flokken
Om 2 år er det 103 roboter i flokken
Om 3 år er det 95 roboter i flokken
Hvor mange roboter er det nå?
50
Om 1 år er det 45 roboter i flokken
Om 2 år er det 42 roboter i flokken
Om 3 år er det 28 roboter i flokken
Værlogger

Før du gjør denne oppgaven, må du installere requests -modelen til Python. Dette er en modul som brukes for å laste ned data fra internett til Python-programmer.

For å installerer requests, kan du opprette et script install_requests.py og kopiere inn følgende:

import sys
from subprocess import run

package_name = 'requests'

run(f'{sys.executable} -m ensurepip'.split())
run(f'{sys.executable} -m pip install --upgrade pip'.split())
run(f'{sys.executable} -m pip install {package_name}'.split())

Kjør programmet. Hvis alt fungerer som det skal, vil du få informasjon om installsjonen var vellykket eller ikke i terminalen. Etter installasjonen kan du slette install_requests.py igjen hvis du vil.


På nettsiden https://api.met.no/weatherapi/nowcast/2.0/complete?lat=60.3894&lon=5.33 finner du Metrologisk institutt sitt værvarsel for Bergen den neste timen.

Kopier dette Python-programmet inn i weather_logger.py og kjør. Sjekk at programmet skriver ut den samme informasjonen du finner ved å gå til nettsiden over.

import requests

url = "https://api.met.no/weatherapi/nowcast/2.0/complete?lat=60.3894&lon=5.33"
response = requests.get(url, headers={"User-Agent": "no.uib.ii.inf100"})
data = response.json()

print(data)
Steg 1
  • Endre weather_logger.py slik at programmet skriver ut den nåværende lufttemperaturen og tidspunktet det gjelder for (dette er første element i «timeseries»)

Eksempelutskrift:

2025-08-20T12:35:00Z
16.9

Vi ønsker å logge denne informasjonen i en fil weather_log.json hver gang vi kjører programmet.

Steg 2
  • Opprett en fil weather_log.json og la den i utgangspunktet inneholde en tom liste
[]
Steg 3
  • I Python-programmet, les inn objektet fra weather_log.json til en ny variabel som representerer loggen.
Steg 4
  • Opprett et nytt oppslagsverk i Python-programmet med to nøkler "time" og "air_temp". La de tilhørende verdiene være de samme du skriver ut til skjermen i steg 1.
entry = {
  "time": ...,
  "air_temp": ...,
}
Steg 5
  • Legg oppslagsverket til i loggen. Skriv deretter loggen tilbake til filen weather_log.json.

For å legge et element til i slutten av en liste, kan du bruke .append() -metoden.

a = [2, 3, 5]
x = 42
a.append(x)

print(a) # [2, 3, 5, 42]

Når du er ferdig, skal programmet virke slik at hver gang du kjører det, legges det til en ny observasjon i weather_log.json

For eksempel, hvis weather_log.json først inneholdt

[]

og jeg deretter kjørte programmet mitt to ganger etter hverandre, så skal weather_log.json se omtrent slik ut:

[
  {
    "time": "2025-08-20T12:35:00Z",
    "air_temp": 16.9 
  },
  {
    "time": "2025-08-20T12:35:00Z",
    "air_temp": 16.9
  }
]
Haversine

Undersøk filen points.json, som også vises også her:

{
  "type": "FeatureCollection",
  "features": [
    {
      "id": 42,
      "type": "Feature",
      "properties": { "Name": "Gruppetimer" },
      "geometry": {
        "coordinates": [5.32938628135696, 60.38151104034819],
        "type": "Point"
      }
    },
    {
      "id": 95,
      "type": "Feature",
      "properties": { "Name": "Turmål" },
      "geometry": {
        "coordinates": [5.342659324608178, 60.394646630412296],
        "type": "Point"
      }
    }
  ]
}

Denne filen inneholder en form for JSON som kalles GeoJSON. Dette er et populært format for å dele kartdata.

Nettsiden https://geojson.io/ er et eksempel på et program som kan lese GeoJSON -formatet. Du kan prøve å la den lese filen over og se hvor punktene befinner seg.

Tallene som befinner seg i coordinates er henholdsvis lengdegrad og breddegrad oppgitt i grader.

I filen haversine.py, skriv kode som leser en GeoJSON -fil points.json som inneholder to punkter slik som eksempelet over. La programmet skrive ut avstanden mellom punktene i antall meter. Vi aksepterer svar som er innenfor én meters margin.

For å regne ut avstanden mellom punktene, må du bruke Haversine -formelen, som regner ut avstanden mellom to punkter samtidig som den tar jordklodens krumming med i betraktningen. I denne formelen er avstanden \(d\) er gitt ved

$$d = 2R \cdot \arcsin\left(\sqrt{\left(\sin^2\left(\frac{\varphi_2 - \varphi_1}{2}\right) + \cos\varphi_1 \cos\varphi_2 \sin^2\left(\frac{\lambda_2 - \lambda_1}{2}\right)\right)}\right)$$

hvor

  • \(R\) er jordens radius i meter (ca 6371000)
  • \(\lambda_1\) og \(\varphi_1\) er henholdsvis lengdegrad og breddegrad i radianer for første punkt.
  • \(\lambda_2\) og \(\varphi_2\) er henholdsvis lengdegrad og breddegrad i radianer for andre punkt.
from math import radians

lat_deg = 5.342659324608178
lat_rad = radians(lat_deg)

print(f'{lat_deg} grader er {lat_rad} radianer')

For å opphøye et tall i et annet, kan vi benytte ** -operatoren.

x = 4
y = x**2
print(y)  # 16

Å finne kvadratrot er det samme som å eksponentiere i 0.5

x = 16
y = x**0.5
print(y)  # 4.0

Å finne kvadratrot kan også gjøres med å importere sqrt -metoden fram math -modulen.

from math import sqrt

x = 16
y = sqrt(x)
print(y)  # 4.0
from math import sin, cos, asin

v = 0.05

a = sin(v)
b = cos(v)
c = asin(v)

print(a, b, c)

Husk også at \(\sin^2(x)\) er det samme som \((\sin(x))^2\).

Når programmet er ferdig, skal det skrive ut

1632.5513825024832

i terminalen dersom points.json ligger i arbeidsmappen din. Dette indikerer avstanden (i meter) mellom de to punktene i filen.

Prøv selv først, før du studerer dette hintet alt for nøye!

from math import sin, cos, asin, sqrt, radians

# Berlin
lat1 = 52.52
lon1 = 13.405

# Paris
lat2 = 48.8566
lon2 = 2.3522

earth_radius = 6371000  # meter
phi1 = radians(lat1)
lam1 = radians(lon1)
phi2 = radians(lat2)
lam2 = radians(lon2)

a = sin((phi2 - phi1) / 2)**2 + cos(phi1) * cos(phi2) * sin((lam2 - lam1) / 2)**2
result = 2 * earth_radius * asin(sqrt(a))
print(result)