Python: Forskjell mellom sideversjoner
| Linje 213: | Linje 213: | ||
[[File: 04112025-03.png |centre| | [[File: 04112025-03.png |centre|200px]] | ||
=== While-løkke === | === While-løkke === | ||
Sideversjonen fra 4. nov. 2025 kl. 05:32
Her vil det etter hvert komme en del stoff om programmering i vgs. Dersom du har kunnskaper er det fint om du bidrar.
Det som kommer her er ment for personer som ikke kjenner Python og ikke har noen programmeringserfaring fra før.
Du skal nå lære å skrive en oppskrift på noe som skal utføres, i et språk som datamaskinen forstår. Datamaskinen og oppskriften vil da kunne utføre store arbeidsoppgaver på kort tid. En datamaskin kan forstå mange språk. Du skal brukket et som heter Pyton. Nedenfor har du lenker til to serier med videokurs. Vi anbefaler at du koder / programmerer parallelt med at du ser videoene. Bruk pauseknappen.
Denne serien anbefales først: Grunnkurs NTNU
Denne er noe mer omfattende; IT Grunnkus NTNU
Kom i gang
Python 3 kan du laste ned her: Python 3. Du trenger et egnet sted for å skrive programmer.En grei editor for begynnere heter Mu. Her er noen andre muligheter : noen editorer
Syntaks
- Python utfører instruksjonene i ordnet rekkefølge. Kommandoen på linje 4 blir utført. Så blir kommandoen på linje 5 utført, osv.
- Python skiller mellom store og SMÅ bokstaver.
- Matematisk notasjon
INN--------------------------$\rightarrow$ UT
Man bruke * for multiplikasjon og ** for "opphøyd i", $10^3$ skrives 10 ** 3. Linje 7 viser heltallsdivisjon. Tallet tre går 3 ganger opp i 10. Linje 8 viser resten vi får når 10 deles på tre. Det kalles modulo. .
Flytskjema
Et flytskjema er en disposisjon eller oversikt over det programmet skal gjøre. Det er en hjelp til å holde oversikt og til å strukturere egne tanker. Det er flere symboler som brukes og vi ser her på fem av dem.
Oval boks : start eller slutt
Paralellogram: Her skal noe inn eller ut
Rektangel: Programmet gjør noe
Diamant: Her utføres et valg
Pilene brukes til å angi rekkefølgen på prosessen ved at de går fra en boks til neste. Det enkleste når man skal lage flytskjema er papir og blyant, men det er også en mulighet i Word, og annen software, men det tar normalt lengre tid men ser kanskje litt penere ut.
Eksempel på bruk av flytskjema
Vi ønsker å lage et program som tar kvadratroten av en differanse. For eksempel $ \sqrt d = \sqrt{a-b}$ Et flytskjema kan se slik ut:
Flytskjemaet vil hjelpe deg til å sortere de algoritmisk tankene og til en dypere forståelse av det du skal gjøre. En god vane er å lage et flytskjema før du begynner selve programmeringen.
La oss se litt nærmere på flytskjemaet før vi omsetter det i ett program.
1. I starten av programmet er det fint med informasjon om hva programmet gjør, når det ble laget, og hvem som har laget det. Bruk tegnet # i starten av hver programlinje, Det vil ikke bli lest av datamaskinen, men er kun informasjon til den som skal lese programmet.
2. Her kommuniserer vi med maskinen. Vi må legge inn verdier for tallene a og b
3. Her regner man ut verdien av a - b. Vi får nå 3 muligheter. Svaret vi får kan bli negativt, null eller positivt. Dersom det blir negativt har vi ingen løsning. Dersom a -b = 0 er svaret null. Dersom a - b er et positivt tall kan vi ta kvadratroten av det.
Ett par eksempler med kommentarer
Eks 1.
- Python bruker programlinjer, fint å referere til og en hjelp ved feilsøking.
- # brukes når man ønsker å gi forklaringer på hva som skjer. Bruk kommentarer, det øker lesbarheten av programmet.
- Det gjør ikke noe om en linje (3) er tom.
- Linjene 4 -6 gir bruker anledning til å gi inn variablene a, b og c, som heltall (int = integer).
- Linjene 7-11 printer ut varianter av inputen.
Når vi kjører programmet kan resultatet se slik ut:
De tre første linjene i svaret er et resultat av at jeg valgte a =1, b = -4 og c = 2. Tilsvarer programlinjene 4 - 6.
VALG
If - elif
I dette lille programmet taster man inn antall flyreiser man har i løpet av året. Avhengig av hvor mange man har får man en kommentar fra programmet.
LØKKER
Et dataprogram er godt egnet til å gjøre kjedelige ting som for eksempel mange gjentakende operasjoner. Vi kan for eksempel lage et program som regner ut summen av alle heltall mellom 1 og 1 000 000.
Dette er jo et ganske ubrukelig program for alt annet enn å regne ut summen at heltallene fra 1 til 1 000 000. Vi han modifisere programmet slik at vi selv bestemmer den øvre grensen.
Lærebok i Python
Python er et moderne, lettlest og kraftig programmeringsspråk. Denne boka tar deg steg for steg gjennom grunnleggende programmering, med vekt på **klasser, funksjoner, inn- og ut-data, løkker og valg**.
1. Introduksjon
Python er et språk som er laget for å være enkelt å lese og skrive. Koden ligner på naturlig språk, og det er derfor mye brukt i utdanning, vitenskap og webutvikling.
Eksempel: <syntaxhighlight lang="python"> print("Hei, verden!") </syntaxhighlight>
Dette programmet skriver: <syntaxhighlight lang="text"> Hei, verden! </syntaxhighlight>
2. Inn- og ut-data
Python bruker `input()` for å lese data fra brukeren, og `print()` for å skrive ut tekst til skjermen.
Eksempel: Enkel input og output
<syntaxhighlight lang="python"> navn = input("Hva heter du? ") print("Hei", navn) </syntaxhighlight>
Utdata: <syntaxhighlight lang="text"> Hva heter du? Ola Hei Ola </syntaxhighlight>
Du kan også behandle tall: <syntaxhighlight lang="python"> alder = int(input("Hvor gammel er du? ")) print("Om 10 år er du", alder + 10, "år gammel.") </syntaxhighlight>
3. Variabler og datatyper
I Python trenger du ikke å spesifisere datatypen eksplisitt. Språket finner ut av det selv.
<syntaxhighlight lang="python"> heltall = 5 desimaltall = 3.14 tekst = "Python" sant_eller_usant = True </syntaxhighlight>
Du kan vise typen slik: <syntaxhighlight lang="python"> print(type(heltall)) # <class 'int'> print(type(desimaltall)) # <class 'float'> print(type(tekst)) # <class 'str'> print(type(sant_eller_usant)) # <class 'bool'> </syntaxhighlight>
4. Valg (if-setninger)
If-setninger brukes for å velge hva programmet skal gjøre.

Sammenligningsoperatorer
| Operator | Betydning | Eksempel |
|---|---|---|
| == | lik | a == b |
| != | ulik | a != b |
| < | mindre enn | a < b |
| > | større enn | a > b |
| <= | mindre eller lik | a <= b |
| >= | større eller lik | a >= b |
5. Løkker
Løkker brukes til å gjenta kode flere ganger.
For-løkke
Telle med range()

Output

While-løkke
<syntaxhighlight lang="python"> teller = 0 while teller < 5:
print("Teller:", teller)
teller += 1
</syntaxhighlight>
Kombinasjon med if
<syntaxhighlight lang="python"> for tall in range(1, 11):
if tall % 2 == 0:
print(tall, "er partall")
else:
print(tall, "er oddetall")
</syntaxhighlight>
6. Funksjoner
Funksjoner brukes for å organisere koden og gjøre den gjenbrukbar.
Eksempel: En enkel funksjon
<syntaxhighlight lang="python"> def hils(navn):
print("Hei", navn)
hils("Anna") </syntaxhighlight>
Funksjon med returverdi
<syntaxhighlight lang="python"> def kvadrat(tall):
return tall * tall
print(kvadrat(4)) # Skriver 16 </syntaxhighlight>
Flere parametre
<syntaxhighlight lang="python"> def areal_rektangel(bredde, høyde):
return bredde * høyde
print(areal_rektangel(5, 3)) # 15 </syntaxhighlight>
7. Klasser og objekter
Python er et objektorientert språk. Du kan lage dine egne typer med **klasser**.
<syntaxhighlight lang="python"> class Person:
def __init__(self, navn, alder):
self.navn = navn
self.alder = alder
def si_hei(self):
print(f"Hei, jeg heter {self.navn} og er {self.alder} år gammel.")
- Opprette objekt
p1 = Person("Ola", 25) p1.si_hei() </syntaxhighlight>
Forklaring
- `__init__` er konstruktøren – kjøres automatisk når et objekt lages.
- `self` peker på objektet selv (samme som *this* i andre språk).
- Metoder defineres som vanlige funksjoner inni klassen.
Eksempel: Klasse med beregning
<syntaxhighlight lang="python"> class Sirkel:
def __init__(self, radius):
self.radius = radius
def areal(self):
return 3.14 * self.radius ** 2
sirkel1 = Sirkel(5) print("Areal:", sirkel1.areal()) </syntaxhighlight>
8. Filbehandling
Lesing og skriving av filer er enkelt i Python.
Skrive til fil
<syntaxhighlight lang="python"> with open("data.txt", "w") as fil:
fil.write("Dette er en test.\n")
</syntaxhighlight>
Lese fra fil
<syntaxhighlight lang="python"> with open("data.txt", "r") as fil:
innhold = fil.read() print(innhold)
</syntaxhighlight>
9. Kombinasjon: Alt sammen i et lite prosjekt
Her lager vi et lite program som håndterer en liste over personer:
<syntaxhighlight lang="python"> class Person:
def __init__(self, navn, alder):
self.navn = navn
self.alder = alder
def __str__(self):
return f"{self.navn} ({self.alder} år)"
personer = []
for i in range(3):
navn = input("Navn: ")
alder = int(input("Alder: "))
p = Person(navn, alder)
personer.append(p)
print("\nRegistrerte personer:") for p in personer:
print(p)
</syntaxhighlight>
10. Oppsummering
I denne boka har du lært om:
- Variabler og datatyper
- Inn- og ut-data
- Valg (if-setninger)
- Løkker (for og while)
- Funksjoner
- Klasser og objekter
- Filbehandling
Videre kan du lære mer om:
- Feilhåndtering (try/except)
- Moduler og pakker
- Arv og polymorfi
- Biblioteker som `math`, `datetime`, `random` og `pandas`
11. Øvingsoppgaver
- Lag en funksjon som skriver ut alle partall mellom 1 og 100.
- Lag en klasse `Bil` med attributter `merke` og `år`, og en metode som skriver ut informasjonen.
- Lag et program som leser inn tall fra brukeren til du skriver `0`, og regner ut gjennomsnittet.
- Lag et program som skriver alle tall fra 1 til 100, men skriver "Fizz" for tall delelig på 3, "Buzz" for 5 og "FizzBuzz" for begge.
Sist oppdatert: 2025
Lærebok i Python (Del 2)
Denne delen bygger videre på grunnleggende Python, og går dypere inn i **datastrukturer, feilhåndtering, moduler og filformat**. Du bør kunne variabler, løkker, valg, funksjoner og klasser før du begynner her.
12. Lister
Lister brukes til å lagre flere verdier i én variabel.
<syntaxhighlight lang="python"> frukt = ["eple", "banan", "appelsin"] print(frukt) </syntaxhighlight>
Tilgang til elementer
<syntaxhighlight lang="python"> print(frukt[0]) # eple print(frukt[-1]) # appelsin </syntaxhighlight>
Legge til og fjerne elementer
<syntaxhighlight lang="python"> frukt.append("druer") # Legg til på slutten frukt.remove("banan") # Fjern element print(frukt) </syntaxhighlight>
Løkke gjennom liste
<syntaxhighlight lang="python"> for vare in frukt:
print("Jeg liker", vare)
</syntaxhighlight>
Listeforståelser (list comprehensions)
<syntaxhighlight lang="python"> tall = [x * 2 for x in range(5)] print(tall) # [0, 2, 4, 6, 8] </syntaxhighlight>
13. Tupler
En **tuple** er som en liste, men kan ikke endres (den er uforanderlig).
<syntaxhighlight lang="python"> person = ("Ola", 25) print(person[0]) # Ola </syntaxhighlight>
Du kan bruke tupler som nøkler i ordbøker (dict) fordi de er uforanderlige.
14. Dictionaries (Ordbøker)
En dictionary lagrer data som **nøkkel:verdi-par**.
<syntaxhighlight lang="python"> student = {
"navn": "Kari", "alder": 21, "studie": "Informatikk"
}
print(student["navn"]) </syntaxhighlight>
Legge til og endre
<syntaxhighlight lang="python"> student["alder"] = 22 student["by"] = "Oslo" </syntaxhighlight>
Løkke gjennom dictionary
<syntaxhighlight lang="python"> for nøkkel, verdi in student.items():
print(nøkkel, ":", verdi)
</syntaxhighlight>
15. Feilhåndtering
Når noe går galt, kan programmet stoppe. Med **try-except** kan du fange og håndtere feil.
<syntaxhighlight lang="python"> try:
tall = int(input("Skriv et tall: "))
print("Kvadratet er", tall * tall)
except ValueError:
print("Du må skrive et heltall!")
</syntaxhighlight>
Flere typer feil
<syntaxhighlight lang="python"> try:
fil = open("data.txt", "r")
innhold = fil.read()
print(innhold)
except FileNotFoundError:
print("Filen finnes ikke!")
finally:
print("Programmet er ferdig.")
</syntaxhighlight>
- `try` – koden som kan feile
- `except` – hva som skal skje hvis det feiler
- `finally` – kjøres alltid, uansett
16. Moduler og biblioteker
Moduler er Python-filer med funksjoner du kan gjenbruke.
Bruke standardbibliotek
<syntaxhighlight lang="python"> import math print(math.sqrt(16)) # 4.0 </syntaxhighlight>
Lage egne moduler
Lag en fil `minmodul.py`: <syntaxhighlight lang="python"> def hei():
print("Hei fra min modul!")
</syntaxhighlight>
Og importer den i et annet program: <syntaxhighlight lang="python"> import minmodul minmodul.hei() </syntaxhighlight>
Forkortelser
<syntaxhighlight lang="python"> import random as r print(r.randint(1, 10)) </syntaxhighlight>
17. JSON-filer
JSON brukes for å lagre strukturerte data. Python har et innebygd bibliotek kalt `json`.
Skrive JSON til fil
<syntaxhighlight lang="python"> import json
data = {"navn": "Ola", "alder": 25, "by": "Bergen"}
with open("data.json", "w") as fil:
json.dump(data, fil)
</syntaxhighlight>
Lese JSON fra fil
<syntaxhighlight lang="python"> with open("data.json", "r") as fil:
innhold = json.load(fil) print(innhold["navn"])
</syntaxhighlight>
---
18. Lister av objekter
Du kan lagre flere objekter i en liste for enkel håndtering.
<syntaxhighlight lang="python"> class Bil:
def __init__(self, merke, år):
self.merke = merke
self.år = år
def __str__(self):
return f"{self.merke} ({self.år})"
biler = [
Bil("Toyota", 2015),
Bil("Tesla", 2022),
Bil("Volvo", 2018)
]
for bil in biler:
print(bil)
</syntaxhighlight>
---
19. Arv og utvidelse av klasser
En klasse kan arve fra en annen klasse.
<syntaxhighlight lang="python"> class Dyr:
def __init__(self, navn):
self.navn = navn
def lag_lyd(self):
print("Ukjent lyd")
class Hund(Dyr):
def lag_lyd(self):
print("Voff!")
hund = Hund("Fido") hund.lag_lyd() # Voff! </syntaxhighlight>
---
20. Lambda og anonyme funksjoner
Noen ganger trenger du små funksjoner "på stedet".
<syntaxhighlight lang="python"> kvadrat = lambda x: x * x print(kvadrat(5)) </syntaxhighlight>
Kan også brukes med innebygde funksjoner: <syntaxhighlight lang="python"> tall = [1, 2, 3, 4, 5] doble = list(map(lambda x: x * 2, tall)) print(doble) </syntaxhighlight>
---
21. Liste-, tuple- og dictionary-metoder
| Type | Vanlige metoder | Eksempel |
|---|---|---|
| Liste | append, remove, sort, reverse | <syntaxhighlight lang="python">liste.append(3)</syntaxhighlight> |
| Tuple | count, index | <syntaxhighlight lang="python">t.count(2)</syntaxhighlight> |
| Dict | keys, values, items, get, pop | <syntaxhighlight lang="python">d.get("navn")</syntaxhighlight> |
---
22. Import av eksterne pakker
For å installere nye moduler bruker du **pip**:
<syntaxhighlight lang="bash"> pip install requests </syntaxhighlight>
Deretter i Python: <syntaxhighlight lang="python"> import requests r = requests.get("https://api.github.com") print(r.status_code) </syntaxhighlight>
---
23. Små prosjekter
Kalkulator
<syntaxhighlight lang="python"> def kalkulator():
a = float(input("Tall 1: "))
b = float(input("Tall 2: "))
operasjon = input("Velg (+, -, *, /): ")
if operasjon == '+':
print(a + b)
elif operasjon == '-':
print(a - b)
elif operasjon == '*':
print(a * b)
elif operasjon == '/':
print(a / b)
else:
print("Ugyldig valg!")
kalkulator() </syntaxhighlight>
Enkelt lagringssystem med JSON
<syntaxhighlight lang="python"> import json
filnavn = "brukere.json" brukere = []
for i in range(2):
navn = input("Navn: ")
alder = int(input("Alder: "))
brukere.append({"navn": navn, "alder": alder})
with open(filnavn, "w") as f:
json.dump(brukere, f)
print("Lagret til brukere.json") </syntaxhighlight>
---
24. Feilsøking og tips
- Bruk `print()` for å se hva som skjer i koden din.
- Bruk `type()` for å finne ut hva slags datatype du har.
- Bruk et IDE som Visual Studio Code eller Thonny.
- Les feilmeldinger nøye — de peker rett på problemet!
---
25. Videre læring
- **Objektorientert design (OOP)** – arv, polymorfi, abstraksjon
- **Filhåndtering** – CSV, Excel, JSON
- **Datavitenskap** – NumPy, Pandas, Matplotlib
- **Webutvikling** – Flask, Django
- **Spill** – Pygame
- **AI og maskinlæring** – scikit-learn, TensorFlow
Sist oppdatert: 2025 Utgiver: Open Python Lærebokprosjekt
Programsnutter







