Lær systematiske metoder for å finne og rette feil i kode, og forstå betydningen av testing for kvalitetssikring.
Feilsøking og testing
Alle programmerere skriver kode med feil. Det viktige er å finne og rette dem systematisk.
Tre typer feil
Syntaksfeil – bryter med Pythons grammatikk (manglende kolon, feil innrykk). Lett å finne.
Kjøretidsfeil – oppstår under kjøring: int("abc") (ValueError), 10/0 (ZeroDivisionError).
Logiske feil – koden kjører, men gir feil resultat: a + b / 2 i stedet for (a + b) / 2. Vanskeligst å finne.
Debugging med print
def rabatt(pris, prosent):
print(f"DEBUG: pris={pris}, prosent={prosent}")
return pris - pris * prosent / 100Systematisk: 1) Reproduser feilen, 2) Isoler den, 3) Forstå den, 4) Rett den, 5) Test.
Feilhåndtering med try-except
try:
tall = int(input("Tall: "))
print(100 / tall)
except ValueError:
print("Ugyldig tall!")
except ZeroDivisionError:
print("Kan ikke dele på null!")Enhetstesting med assert
def adder(a, b):
return a + b
assert adder(2, 3) == 5
assert adder(-1, 1) == 0
assert adder(0, 0) == 0
print("Alle tester bestått!")assert sjekker om uttrykket er True. Hvis False, krasjer programmet med feilmelding. Skriv tester for å fange feil tidlig.
Oppsummering
- Syntaksfeil oppdages av Python og hindrer kjøring (f.eks. manglende kolon eller parentes).
- Logiske feil gir feil resultat uten feilmelding og er vanskeligere å oppdage.
- Kjøretidsfeil oppstår under kjøring (f.eks. deling på null eller ugyldig indeks).
- Print-debugging bruker print() til å vise variabelverdier underveis for å finne feil.
- try-except håndterer kjøretidsfeil og lar programmet fortsette selv om noe går galt.
- Enhetstesting med assert sjekker at funksjoner gir forventet resultat og fanger feil tidlig.
- Systematisk feilsøking innebærer å lese feilmeldingen, isolere problemet og teste en ting om gangen.
Oppgaver
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.