Kapittel 1 Introduksjon til Python
Da står vi på startstreken! I det første kapittelet skal du installere Python og skrive dine første programmer i Python. Du vil lære nye konsepter som variabler, nøkkelord, og kommentarer. Disse konseptene vil være en del av fundamentet ditt innen programmering i Python. Før vi hopper i gang med å programmere i Python bør vi begynne med elefanten i rommet: Hva betyr det egentlig å programmere?
1.1 Introduksjon - Hva er programmering?
Programmering handler om å lage programmer. Programmer er samlinger av instruksjoner som kan bli forstått av en datamaskin. I bunn og grunn forstår bare datamaskiner sekvenser med 0 og 1. En instruksjon kan dermed se slik ut:
\[01100110 \,\, 110101001 \,\, 010100010 \,\, 11110010\] Her har vi brutt opp instruksjonen i grupper på 8 tegn. Det er to muligheter for hvert tegn, nemlig enten 0 eller 1. Dersom vi skriver programmer som sekvenser med 0 og 1 så skriver vi i maskinkode1.
Selv om maskinkode er forståelig for datamaskiner, så er dette svært lite intuitivt for oss. Det er vanskelig å se forskjell på instruksjonen over og denne:
\[01100110 \,\, 110101001 \,\, 010100100 \,\, 11110010\]
Hvis du gidder å bruke litt tid så vil du finne forskjellen. Feil sniker seg fort inn ubemerket når vi skriver maskinkode. I tillegg må instruksjonene være lange før vi greier å lage noe interessant.
Løsningen på dette har vært å utvikle programmeringsspråk2. Ved hjelp av programmeringsspråk kan vi skrive instruksjoner som er mer intuitive for oss mennesker enn sekvenser med 0 og 1. På denne måten blir koden vår både enklere å skrive, lese, og vedlikeholde. Som du sikkert har forstått så er Python nettopp et slikt programmeringsspråk. Her kan du se kode skrevet i programmeringsspråk Python:
import math
# Representerer lengden på de to katetene i en rettvinklet trekant
første_katet = 3
andre_katet = 4
# Bruker Pythagoras sin setning til å finne lengden av hypotenusen
hypotenus = math.sqrt(første_katet**2 + andre_katet**2)Du trenger ikke forstå koden enda, det skal vi lære etter hvert. Legg likevel merke til at du kan forstå hva koden handler om litt enklere enn om du fikk servert en lang instruksjon med 0 og 1. Datamaskinen din forstår bare maskinkode, så koden du skriver i Python blir automatisk oversatt til maskinkode før den blir utført.
Det eksisterer en drøss med programmeringsspråk med forskjellige bruksområder. Dersom du ønsker å implementere logikk på nettsider så er programmeringsspråket JavaScript vanlig å bruke. Hvis du vil bruke avanserte statistiske modeller for å estimere prisen på en forsikring så er kanskje programmeringsspråket R noe for deg. Forskjellige programmeringsspråk har forskjellige styrker og svakheter, så det finnes ikke et programmeringsspråk som er best på alt. I denne boken skal vi fullt og helt fokusere på programmeringsspråket Python.
Hvorfor er Python et godt programmeringsspråk å lære? Python er et programmeringsspråk som er lett å lese sammenlignet med andre programmeringsspråk. Samtidig kan Python bli brukt til alt fra logikken bak nettsider, til finansapplikasjoner, til maskinlæring og dataanalyse. Jeg har selv skrevet Python hos flere store norske selskaper, og det er stor etterspørsel etter Python i både Norge og resten av verden. Derfor er Python et utmerket språk å begynne med!
Mange av konseptene i Python er overførbare til andre programmeringsspråk. Dette vil ikke si at du vil kunne skrive i JavaScript eller C++ etter du er ferdig med denne boken. Likevel vil du mye lettere kunne lære et nytt programmeringsspråk i tillegg til Python dersom du trenger det. Så hvis drømmen din er å jobbe med noe Python ikke er spesielt egnet til, som spillutvikling, vil du likevel dra nytte av denne boken.
1.2 Installering
Det første vi må gjøre for å komme i gang er å installere Python. I tillegg skal vi installere et avansert tekstprogram som gjør det enklere og mer effektivt å skrive Python-kode. Hvis du allerede har installert begge deler kan du hoppe videre til seksjon 1.3.
1.2.1 Installere Python
Start med å gå inn på nettsiden:
https://www.python.org/downloads/
Der vil du bli møtt med en nettside som i skrivende stund ser slik ut:

Her gjør nettsiden det enkelt for deg siden du blir møtt med en stor gul knapp for å laste ned Python install manager. Trykk på denne knappen!
Etter nedlastingen er ferdig kjører du den nedlastede filen for å installere Python. Du vil da bli dratt gjennom en installasjonsguide. Her kan du velge de innstillingene som allerede er huket av med mindre du har en sterk preferanse. Etter installasjonen er ferdig vil Python være installert.
1.2.2 Installere et avansert tekstprogram
Strengt tatt trenger vi bare et enkelt tekstprogram, som for eksempel Notepad på Windows, for å skrive i Python. Et program i Python er bare tekst som kan utføres av Python. Likevel bruker de fleste som skriver Python et tekstprogram som er mer egnet for programmering. Et mer egnet tekstprogram bør blant annet:
Enkelt kunne navigere mellom forskjellige filer.
Ha en innebygd terminal der vi kan teste kommandoer.
Ha mulighet til å laste ned utvidelser som hjelper med programmering.
Et slikt avansert tekstprogram kalles en IDE3. Dette gjør programmering mye mer brukervennlig.
Jeg skal nå forklare hvordan du laster ned og bruker den kjente IDEen Visual Studio Code. Denne er både gratis og populær. Om du allerede er vant til en annen IDE kan du godt bruke den du kjenner fra før av. Hvis du ikke har noen sterk preferanse så anbefaler jeg at du bruker Visual Studio Code slik at opplevelsen din blir så lik som mulig til det du leser.
For å installere Visual Studio Code, gå til nettsiden:
https://code.visualstudio.com/
Her vil du bli møtt med en nettside med mer moderne design enn det du finner på Python sine hjemmesider. I skrivende stund ser nettsiden slik ut:

Igjen blir du møtt med en stor knapp for nedlastning. Trykk på den! Mens du laster ned Visual Studio Code kan du navigere litt rundt på nettsiden. Det er mye opplæringsmateriell for Visual Studio Code, der du kan lære deg alt fra hurtigtaster til spennende utvidelser. Du trenger ikke bruke særlig med tid på dette nå, men det kan være greit å komme tilbake til senere.
Etter at nedlastingen er fullført, må du kjøre den nedlastede filen og deretter gå gjennom en installasjonsguide. Du trenger ikke endre på noen av de forhåndsvalgte innstillingene. Etter installasjonen er ferdig kan du åpne Visual Studio Code som ser slik ut:
En av tingene du kan gjøre i Visual Studio Code er å åpne et terminalvindu der du kan teste Python-kommandoer. Vi kan åpne et nytt terminalvindu ved å trykke på menyen på toppen av programmet slik:

Etter at du har åpnet terminalvinduet kan du skrive inn ordet python i terminalen og deretter trykke på tasten Enter. Hvis Python har blitt installert riktig vil du se noe lignende til dette:

Dersom Python ikke har blitt installert riktig så vil du få en beskjed om at Python ikke er en gjenkjent kommando eller program. Hvis du får denne feilmeldingen, må du feilsøke på nettet for å finne ut hva som er galt.
Når du skrev inn python i terminalen og trykket Enter gav du beskjed om at du ønsket å skrive Python-kommandoer. Nå kan du prøve dette. Skriv inn 1 + 1 i terminalen og trykk igjen Enter så vil du se dette:

Her har Python regnet ut at 1 pluss 1 er lik 2. Ikke veldig komplisert, men det er en start. Du vil se at du nå kan skrive flere kommandoer. Dette kalles en REPL4. Her leser Python inn at du skriver 1 + 1, evaluerer at dette er lik 2, og skriver dette ut til deg. Deretter returnerer Python ballen til deg slik at du kan skrive flere kommandoer.
Vi skal ikke hovedsakelig skrive kode i Pythons REPL, men i tekstfiler. En REPL er et fint sted å teste ut enkle Python-kommandoer. For større programmer trenger vi å skrive egne tekstfiler som vi deretter kjører. Du kan nå lukke terminalvinduet om du ønsker.
Nå er du klar til å begynne å programmere i Python!
1.3 Kjøre et enkelt Python program
Det er på tide å skrive vårt første Python program. Sørg for at du har Visual Studio Code eller det tekstprogrammet du bruker åpent. Opprett en ny fil som du kaller enkelt_program.py. I Visual Studio Code kan du gjøre dette ved å trykke på New File… slik:

Etter at du har valgt Python som filtype kan du lagre filen og gi filen navnet enkelt_program.py. Det er viktig at filnavnet ender med .py siden dette indikerer at filen inneholder Python-kode. I fremtidige seksjoner overlater jeg det til deg å opprette nye Python-filer selv med passende navn.
Skriv inn følgende tekst i filen enkelt_program.py:
Lagre filen enkelt_program.py og kjør deretter programmet. Hvis du bruker Visual Studio Code som IDE er det en avspillingsknapp som har hjelpeteksten Run Python File i øvre høyre hjørne:

Du vil nå se at terminalen åpner seg og at det dukker opp teksten Hallo verden. Du har laget ditt første Python-program. Suksess!
Dette er faktisk en liten kulturell begivenhet. Det er en tradisjon i programmering at det første programmet man skriver skal skrive ut Hello world på engelsk. Vi kjører selvsagt på med den norske varianten Hallo verden.
La oss analysere koden over. Her bruker vi funksjonen5 print() til å skrive ut teksten Hallo verden til terminalen. Du kan ikke skrive navnet til funksjonen print() annerledes. Prøv å kjøre koden under der jeg har bevisst lagt til en ekstra bokstav:
Hvis du igjen kjører programmet så skjer det noe skummelt. Programmet krasjer! Frykt ikke. Dette betyr bare at noe er galt i koden vi skriver. Det som nå blir skrevet til terminalen er Python sin feilmelding6. Dette er en beskjed som kan hjelpe oss med å finne feilen vi har introdusert. Jeg får beskjeden:
NameError: name ‘printt’ is not defined. Did you mean: ‘print’?
Her kan vi se at Python forsøker å hjelpe oss med å finne feilen. En NameError kan komme av at du har stavet et begrep i Python feil. Dette stemmer siden vi stavet funksjonen print() som printt(). Du må være presis for at Python skal forstå hva den skal gjøre. Endre koden tilbake til print() slik at den fungerer igjen.
Hvorfor har koden print('Hallo verden') parentesene ( og ) rundt teksten? Dette indikerer at print-funksjonen tar inn det som står inni parentesene som et argument7. Funksjoner kan ta inn argumenter som endrer hvordan de oppfører seg. Vi skal komme mye inn på funksjoner og deres argumenter gjennom boken. For nå holder det at du forstår at funksjoner har helt spesifikke oppgaver de utfører, og at de mottar argumenter inni parentesene ( og ).
Hva er betydningen av apostrof-tegnene på hver side av beskjeden 'Hallo verden'? Apostrofene hjelper Python med å forstå at teksten ikke har noen spesiell betydning slik som funksjonen print(), men er rett og slett ren tekst. Vi kaller slik tekst for strenger8. Vi skal lære mer om strenger i seksjon 2.3.
Det viktigste er at du forstår logikken bak hva koden gjør. Tiden du bruker på å forstå grunnleggende konsepter i Python vil bli tilbakebetalt mange ganger. Så husk å stoppe opp innimellom og forsikre deg om at du forstår hva hver del av koden gjør. I denne boken er det ikke lov å skumlese!
1.4 Bruke Python som en kalkulator
Du vil etter hvert kunne gjøre utrolig mye mer med Python enn å simulere en kalkulator, men dette er et viktig første steg. Kompliserte applikasjoner, fra fysikkmodellering til finanssystemer, bruker de gamle klassikerne addisjon, subtraksjon, multiplikasjon, og divisjon hyppig.
La oss begynne med addisjon, altså å legge sammen to tall. I Python gjør vi dette med symbolet +. Ikke en stor overraskelse her tipper jeg. Hva tror du skjer hvis du skriver følgende program?
Hvis du kjører programmet så regner Python sammen 2 + 2 og finner naturlig nok ut at dette er lik 4. Men tallet vises ikke i terminalen! Det er fordi vi ikke har bedt Python om å gjøre noe med dette tallet. Fra forrige seksjon vet vi at vi kan skrive ut tall med funksjonen print() slik:
Hvis du kjører programmet så vil du se tallet 4 skrevet ut til terminalen. Da er addisjon i boks! Hvordan tror du at subtraksjon, multiplikasjon, og divisjon blir gjort i Python? Helt riktig! Du bare bruker de vanlige tegnene for symbolene:
Programmet gjør alle fire regneoperasjonene som du er vant med. Merk at programmet har nå flere linjer med kode. Python går gjennom hver linje, en etter en, og utfører dem. Derfor vil svaret på 2 + 2 bli skrevet ut før svaret på 5 - 3. Hvis du ønsker å gjøre det i en annen rekkefølge, så må du bytte om på linjene vi har skrevet.
Nye programmerere er ofte redde for å krasje programmene sine ved å gjøre feil. Denne tankegangen må vi få vekk med en gang. Det er få måter du kan lære Python bedre på enn å bevisst introdusere feil for å se hva som skjer. La oss gjøre det alle mattelærere advarer oss mot. Vi skal nemlig dele på null:
Deling på null gir oss følgende feilmelding:
ZeroDivisionError: division by zero.
Du får en ZeroDivisionError når du deler på null. Du tenker kanskje at du aldri vil dele på null med vilje. Likevel skjer dette ganske ofte i mer kompliserte programmer. I slike tilfeller vil ZeroDivisionError gi deg et hint om hva som er galt. Du kjenner nå til både NameError og ZeroDivisionError. Du vil lære mange flere feil i løpet av boken, og du vil nytte godt av å prøve å huske de mest vanlige.
I tillegg til de fire vanlige regneoperasjonene ovenfor er det to operasjoner til som brukes ganske hyppig. Den første av dem er for å regne ut eksponenter, som for eksempel å regne ut at \(2^3 = 8\). Her skulle du kanskje tro at det er symbolet ^ som blir brukt i Python, men det stemmer ikke. I Python er det bruken av to multiplikasjonssymboler som indikerer eksponent:
Den siste operasjon som vi går igjennom her er modulus-operatoren9 som betegnes med %. Den forteller hvor mye rest det er igjen etter at du deler ett tall på et annet.
La oss prøve å forstå modulus-operatoren ved å gjøre noen kodeeksempler:
Kjør koden over og merk deg hva utskriften til terminalen blir. Her er forklaringen:
3 % 2: Her går 2 opp i 3 én gang, og vi sitter igjen med 1 i rest.7 % 3: Her går 3 opp i 7 to ganger (\(3 \cdot 2 = 6\)), og vi sitter igjen med 1 i rest.8 % 4: Her går 4 opp i 8 nøyaktig to ganger, og vi sitter igjen med 0 i rest.
Modulus-operasjonen er spesielt nyttig når vi skal sjekke om et tall er partall eller oddetall. Hvis et tall modulus 2 gir 0, vet vi at tallet er et partall. Dette skal vi bruke flere ganger i løpet av boken.
Python følger vanlige regneregler. For å mimre litt om dette, hva tror du koden under skriver ut?
Her er det to plausible muligheter. Det ene er at subtraksjonen blir utregnet først, slik at svaret blir 4. Den andre er at multiplikasjonen blir utregnet først, slik at svaret blir -1. Den siste er riktig som du kan teste med å kjøre programmet.
Python bruker de samme regnereglene som vi gjør, så multiplikasjon skal bli utført før subtraksjon. Dersom du ønsker å endre rekkefølgen operasjonene utføres i kan du bruke parenteser. Koden under gjør subtraksjonen først:
Nå kan du bruke Python som en enkel kalkulator. Selv om dette er nyttig så har programmene våre ingen hukommelse. Linjene er ikke avhengig av hverandre, og vi kan dermed ikke bygge videre på det vi allerede har gjort. Denne svakheten må vi fikse om vi skal kunne lage seriøse programmer som vi blir stolte av.
1.5 Variabler
Variabler10 er et helt grunnleggende konsept i programmering. Målet med variabler er å kunne bygge videre på det vi allerede har gjort. Koden under lager to variabler som beskriver en person sitt navn og alder:
Variabelen navn har lagret informasjonen 'Pål Pettersen' som en streng. Variabelen alder har lagret tallet 26 som et heltall. Programmet vårt husker nå denne informasjonen slik at vi kan bruke den senere. Vi kan for eksempel skrive ut den verdien som variabelen alder holder:
Kjører du programmet over vil du skrive ut tallet 26 til terminalen. Når funksjonen print() mottar argumentet alder blir variabelen byttet ut med verdien den representerer, nemlig heltallet 26.
Merk at vi har lagt inn en tom linje mellom alder = 26 og print(alder). I Python kan vi legge inn tomme linjer for å visuelt avgrense kodesnutter. Tomme linjer har ingen innvirkning på hvordan koden kjøres, men de kan gjøre koden lettere å lese.
I spillverdenen er variabler helt sentralt. Tenk deg at du spiller et rollespill der du styrer en karakter som skal utforske en verden fullt av skumle monstre. Du må da ha informasjon om for eksempel:
Hvor mye liv du har (på engelsk HP - Health Points).
Hvor mye magi du har (på engelsk MP - Mana Points).
Hvor mye erfaring du har (på engelsk EXP - Experience Points).
Et rollespill der du mister informasjonen over for hvert sekund som går ville ikke vært særlig gøy å spille. I spill er det fullt av variabler som lagrer informasjon.
Fra spillmetaforen over ser vi at det er viktig at vi kan endre verdien til variabler. Det er nettopp derfor det heter variabler; de skal kunne variere gjennom et program og holde på forskjellige verdier. Dette kan vi demonstrere ved å sette variabelen alder til en ny verdi senere i programmet:
Kjører du programmet over vil det først skrive ut heltallet 26 til terminalen, og deretter heltallet 27. Mellom de to gangene vi bruker funksjonen print() har vi endret verdien til alder fra 26 til 27. Oppdatering av alder er nødvendig i programmer som ligger til grunn for både sosiale medier og helseapplikasjoner. Vi blir alle eldre, og dette må plukkes opp av systemer slik at informasjon holdes oppdatert.
Noen ganger har vi lyst å oppdatere variabler med en helt ny verdi, slik vi har gjort over når alder gikk fra 26 til 27. Men det er også veldig nyttig å kunne oppdatere en variabel ved å endre en tidligere verdi, som her:
Kjører du programmet så får du akkurat det samme som tidligere. Først skriver programmet ut 26, og deretter skriver det ut 27. Hva er det egentlig som skjer i linjen der det står alder = alder + 1? Når Python ser dette utsagnet hentes den eksisterende verdien til variabelen alder på høyre side slik at det blir alder = 26 + 1. Dermed blir dette det samme som å skrive direkte at alder = 27.
Fordelen med å skrive alder = alder + 1 er at dette kan brukes til å legge til ett år til alle aldre, samme hva verdien originalt var. Hvis du bytter ut utsagnet alder = 26 med alder = 72 så vil programmet fortsatt legge til et år til alderen til Pål Pettersen.
Eksempelet over viser også noe annet. Tegnet = i Python fungerer ikke slik som likhetstegnet i matematikk. Hadde dette vært tilfellet, så kunne vi jo bare trukket fra alder på begge sider av likningen alder = alder + 1 slik at vi endte opp med 0 = 1. Dette blir bare tull. Tegnet = blir brukt i programmering til å sette verdien til en variabel. Navnet på venstre side av tegnet = blir en variabel som har verdien på høyre side av tegnet =.
1.6 Nøkkelord og kommentarer
Python har i underkant av 40 ord med helt spesielle betydninger i programmer. Disse ordene kalles nøkkelord11. Noen av dem blir brukt hele tiden, mens andre blir mer sparsomt brukt. I løpet av boken skal vi se på mange av disse nøkkelordene. La oss nå se litt på nøkkelordet import.
Nøkkelordet import lar oss importere funksjonalitet utenfra programmet vårt. Python har et standardbibliotek12 som er ferdigskrevet kode som du kan benytte deg av. Dette blir lastet ned når du installerer Python, og er klart til å importeres til koden din. Les gjennom koden under og se om du kan forstå hva den gjør:
import math
første_katet = 3
andre_katet = 4
hypotenus = math.sqrt(første_katet**2 + andre_katet**2)Koden bruker nøkkelordet import til å importere biblioteket13 math. Dette biblioteket er del av standardbiblioteket og inneholder mange matematiske funksjoner. Funksjonen math.sqrt() bruker vi til å ta kvadratroten av et tall. Som du ser vil variabelen hypotenus holde verdien til hypotenusen til trekanten der lengden på katetene er 3 og 4. Det brukes et punktum mellom navnet på biblioteket math og funksjonsnavnet sqrt når vi importerer den på denne måten.
Biblioteket math har mange andre funksjoner som er nyttige for avanserte matematiske utregninger. Det inkluderer math.exp() for den naturlige eksponentialfunksjonen, math.log() for den naturlige logaritmen, og math.gcd() for å regne ut den største felles divisoren mellom to tall.
Vi skal senere i boken se mange andre biblioteker i standardbiblioteket. Noen eksempler på andre biblioteker er:
Biblioteket
datetimebrukes til å regne med datoer og tidspunkter.Biblioteket
osbrukes til å jobbe med operativsystemet.Biblioteket
smtplibbrukes til å skrive eposter via Python-programmer.
I tillegg til standardbiblioteket i Python finnes det utallige andre biblioteker som andre har laget som vi kan bruke. Slike biblioteker kalles ofte for eksterne pakker14. Dette skal vi lære mer om i kapittel 8.5. Når du vil låne funksjonalitet utenfra, enten fra standardbiblioteker eller eksterne pakker, er nøkkelordet import alltid første steg.
I motsatt ende av nøkkelord finner vi kommentarer. Kommentarer15 er tekst som Python ignorerer. Formålet her er at vi kan skrive kommentarer til andre programmerere som forklarer koden vår. Se på koden under for et eksempel:
innskudd_i_bank = 100000
rente = 1.04
# Vi må regne med renters rente for å finne beløpet etter 3 år
penger_om_tre_år = innskudd_i_bank * rente**3Som du ser hvis du kjører koden over så ignorerer Python hele linjen som begynner med tegnet #. Dette er en kommentar. Den er ikke tiltenkt for Python, men for andre som leser programmet slik at de skal forstå logikken. I dette tilfellet minner kommentaren oss på om at vi må huske renters rente når vi regner med renter over flere år.
Noen ganger kan det også være nyttig å skrive kommentarer til seg selv. De kan enten skrives på egen linje som ovenfor, eller på slutten av en annen linje som her:
innskudd_i_bank = 100000
rente = 1.04 # Bare et gjett, må finne ut den faktiske renten senere
# Vi må regne med renters rente for å finne beløpet etter 3 år
penger_om_tre_år = innskudd_i_bank * rente**3Her kan det være at vi ikke har sjekket renten på banken sin nettside ennå, men ønsker å gjøre dette senere. Da kan vi bruke verdien \(1.04\) for nå, og la kommentaren være en påminnelse om at dette må endres senere.
Nye programmerere har ofte en tendens til å falle i en av to leirer. Enten skriver de ingen kommentarer, eller så skriver de altfor mange. Et eksempel på å bruke det for mye er å bruke kommentarer til å forklare hva koden direkte gjør:
# Setter innskudd_i_bank til å være lik 100000
innskudd_i_bank = 100000
# Setter rente til å være lik 1.04
rente = 1.04
# Regner ut penger_om_tre_år
penger_om_tre_år = innskudd_i_bank * rente**3Det blir bare mer å lese, uten at noe egentlig har blitt enklere. En god kommentar forklarer hvorfor noe blir gjort, eller gir kontekstinformasjon. Selve logikken står svart på hvitt i Python-koden, så den trenger ikke gjentas. Et eksempel på kommentarer som gir kontekst er som følger:
import math
# Representerer lengden på de to katetene i en rettvinklet trekant
første_katet = 3
andre_katet = 4
# Bruker Pythagoras sin setning til å finne lengden av hypotenusen
hypotenus = math.sqrt(første_katet**2 + andre_katet**2)Her gir kommentarene mer kontekst slik at koden blir lettere å lese. I begynnelsen kan du gjerne legge på litt ekstra kommentarer heller enn for få. Kommentarer kan alltids fjernes senere, så ikke vær redd for å bruke dem.
Du har sikkert merket at jeg skriver variabelnavn med små bokstaver og med en understrek _ for å separere ord. Dette er en konvensjon i Python. Andre programmeringsspråk har andre konvensjoner. Du må ikke følge denne konvensjonen, på samme måte som du ikke må lukke munnen mens du tygger mat. Forvent likevel å bli litt uglesett hvis du nekter. Vi diskuterer flere konvensjoner i Python i seksjon 3.6.
1.7 Prosjekt - Konvertering mellom Celsius og Fahrenheit
Tiden er inne for å gå gjennom et prosjekt. Hvert kapittel i boken har en prosjektseksjon, utenom kapittel 7 og kapittel 14 som er store prosjekter i seg selv. I prosjektseksjonene går vi gjennom et lengre eksempel sammen. Dette repeterer noe av stoffet fra kapittelet, samtidig som du får se hva programmering kan brukes til. Skriv ned koden selv mens du går gjennom prosjektene for å få mengdetrening.
1.7.1 Oppgaven
En nettside rapporterer temperaturer over hele landet i skalaen Celsius. For å bli mer populær blant amerikanske turister ønsker nettsiden at temperaturen også skal bli rapportert i Fahrenheit. Dette er temperaturskalaen de fleste amerikanere er mest kjent med. Oppdraget vårt er å skrive et program som konverterer grader i Celsius til grader i Fahrenheit.
1.7.2 Forberedelse
Før vi starter å kode er det lurt å mentalt gå gjennom hva vi trenger:
Vi trenger først en variabel som holder på verdien som representerer grader i Celsius.
Vi trenger å gjøre regneoperasjoner som konverterer grader i Celsius til grader i Fahrenheit. Resultatet må lagres i en ny variabel.
Vi skriver til slutt ut til terminalen hva konverteringen har gitt oss. Dette gjør programmet mer brukervennlig.
De færreste av oss husker hva formelen for konvertering mellom grader i Celsius og grader i Fahrenheit er. Heldigvis er dette noe vi kan slå opp. Et raskt søk viser at dersom \(C\) representerer grader i Celsius og \(F\) representerer grader i Fahrenheit så har vi formelen:
\[F = \frac{9}{5} C + 32.\] Vi har nå alt vi trenger for å løse oppgaven.
1.7.3 Sette opp en variabel for Celsius
Først trenger vi en variabel som representerer grader i Celsius. La oss sette den til en nydelig sommertemperatur på 20 grader for nå:
I koden over har jeg valgt et mye lengre variabelnavn enn bare C. Selv om C er grei som et matematisk variabelnavn, så vil vi ofte i programmering gi mer kontekst til hva variabelen representerer. Et mer utfyllende navn gjør koden mer forståelig.
1.7.4 Gjøre konverteringen
La oss nå gjøre konverteringen til Fahrenheit. Koden under regner ut den tilsvarende temperaturen til 20 grader Celsius i Fahrenheit:
Vi trenger ikke bruke parenteser siden Python har samme regnerekkefølge som vanlig matematikk, nemlig at multiplikasjonen blir gjort før addisjonen. Kjør programmet for å se at du ikke får en feilmelding. Ingenting vil bli skrevet ut til terminalen enda, men det fikser vi snart.
1.7.5 Skrive ut svaret
Vi kan nå skrive ut til terminalen hva som er konklusjonen av konverteringen. En første versjon av dette ser slik ut:
temperatur_celsius = 20
temperatur_fahrenheit = 9/5 * temperatur_celsius + 32
print(temperatur_fahrenheit)Kjører du programmet ovenfor blir \(68.0\) skrevet ut til terminalen. Suksess!
La oss nå si at sommer går til høst, og vi har foran oss en kald novemberdag med \(5\) grader Celsius. Hvis vi endrer verdien til temperatur_celsius fra \(20\) til \(5\) så blir også variabelen temperatur_fahrenheit automatisk oppdatert når du kjører programmet igjen. Dette er magien til variabler. Nå kan du enkelt regne ut grader i Fahrenheit ved å bruke programmet ovenfor.
1.7.6 En liten forbedring
Selv om programmet vi har laget kjører fint, så er beskjeden du får skrevet ut til terminalen litt kryptisk. Du kjører programmet og får ut \(68.0\). Men var dette grader i Celsius eller grader i Fahrenheit? I programmet vårt vil dette være lett å sjekke siden det ikke er særlig langt. Tenk hvor irriterende dette hadde vært å lete frem dersom programmet er 1000 linjer langt. Hvordan kan vi gjøre det enklere å forstå hva som skjer?
I funksjonen print() kan vi skrive ut tekst i tillegg til variabler. Hvis vi splitter dette opp i forskjellige argumenter kan vi skrive dette som følger:
temperatur_celsius = 20
temperatur_fahrenheit = 9/5 * temperatur_celsius + 32
print(temperatur_celsius, 'grader C er', temperatur_fahrenheit, 'grader F.')Her bruker vi komma til å skille mellom de forskjellige argumentene, som enten er tekststrenger eller variabler. Nå er det mye lettere å se hva som skjer når du kjører programmet! Det blir nå skrevet ut til terminalen:
20 grader C er 68.0 grader F.
1.8 Oppgaver
Oppgave 1
Hva gjør følgende kode? Beskriv hvert steg!
pris_måltid = 250
tips_prosent = 0.2
totalpris = pris_måltid * (1 + tips_prosent)
print('Du betalte totalt', totalpris, 'kroner for måltidet inkludert tips.')Oppgave 2
Skriv et program som lager tre variabler som heter navn, alder, og favorittfarge. Sett verdiene slik at variablene beskriver deg. Skriv deretter ut en setning til terminalen som har følgende form ved å bruke dine variabler:
Mitt navn er Pål Pettersen, jeg er 27 år, og favorittfargen min er blå.
Oppgave 3
Skriv kode som bevisst produserer en
NameError. Les feilmeldingen du får nøye. Fiks deretter feilen og kjør koden igjen.Skriv kode som bevisst produserer en
ZeroDivisionError. Les feilmeldingen du får nøye. Fiks deretter feilen og kjør koden igjen.
Oppgave 4
Du har en sparegris og starter med 0 kroner. Hver uke legger du til penger i sparegrisen.
Lag en variabel som heter
pengersom representerer innholdet i sparegrisen. Den skal starte med å ha verdien0.Du la på en 20 kroners mynt i sparegrisen din. Oppdater variabelen
pengermed en ny kodelinje slik at den får verdien20. Skriv ut til terminalen hvor mye penger du har i sparegrisen din.Du la på en 10 kroners mynt i sparegrisen din. Oppdater variabelen
pengermed en ny kodelinje slik at den får verdien30. Skriv ut til terminalen hvor mye penger du har i sparegrisen din.I de to forrige oppgavene kunne du enten brukt utsagn som
penger = 20ogpenger = 30, eller du kunne brukt utsagn sompenger = penger + 20ogpenger = penger + 10. Hva er en fordel med den siste måten å gjøre dette på?
Oppgave 5 (Utfordrende)
Du skal skrive et program som regner ut både omkretsen og arealet til en sirkel, gitt at vi har radiusen til sirkelen. Lag en variabel som heter radius og bruk dette til å regne ut både omkrets og arealet til sirkelen. Du kan sette radiusen til å ha verdien 5.
Du kan starte med å bruke 3.14 som verdien til \(\pi\), men dette er ikke veldig nøyaktig. Fremfor å lete frem veldig mange desimaler kan du bruke biblioteket math, der verdien math.pi gir \(\pi\) med høy presisjon.
Ta gjerne en titt på hva annet som finnes i biblioteket math her: