Lær systematiske metoder for å finne og rette feil i kode, og forstå betydningen av testing for kvalitetssikring.
Feilsøking og testing
Alle programmerarar skriv kode med feil. Det viktige er å finne og rette dei systematisk.
Tre typar feil
Syntaksfeil – bryt med grammatikken til Python (manglande kolon, feil innrykk). Lett å finne.
Køyretidsfeil – oppstår under køyring: int("abc") (ValueError), 10/0 (ZeroDivisionError).
Logiske feil – koden køyrer, men gir feil resultat: a + b / 2 i staden for (a + b) / 2. Vanskelegast å 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 han, 3) Forstå han, 4) Rett han, 5) Test.
Feilhandtering med try-except
try:
tall = int(input("Tall: "))
print(100 / tall)
except ValueError:
print("Ugyldig tall!")
except ZeroDivisionError:
print("Kan ikke dele på null!")Einingstesting 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 sjekkar om uttrykket er True. Viss False, krasjar programmet med feilmelding. Skriv testar for å fange feil tidleg.
Oppsummering
- Syntaksfeil blir oppdaga av Python og hindrar køyring (t.d. manglande kolon eller parentes).
- Logiske feil gir feil resultat utan feilmelding og er vanskelegare å oppdage.
- Køyretidsfeil oppstår under køyring (t.d. deling på null eller ugyldig indeks).
- Print-debugging bruker print() til å vise variabelverdiar undervegs for å finne feil.
- try-except handterer køyretidsfeil og lèt programmet halde fram sjølv om noko går gale.
- Einingstesting med assert sjekkar at funksjonar gir forventa resultat og fangar feil tidleg.
- Systematisk feilsøking inneber å lese feilmeldinga, isolere problemet og teste éin ting om gongen.
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.