Gå till innehållet

Felsökning (Python för nybörjare)

Att felsöka betyder att ta reda på varför programmet krånglar. Här är de vanligaste felen och enkla sätt att fixa dem.

1) Läs felmeddelandet

Felmeddelandet berättar oftast vilken typ av fel det är och vilken rad som strular. - SyntaxError – stavfel i koden (saknar t.ex. ") eller ) ). - NameError – du använder ett namn som inte finns (felstavat variabel/funktion). - TypeError – fel typ, t.ex. försöker lägga ihop text och tal. - ValueError – omvandling misslyckas (t.ex. int("hej")). - IndexError – index utanför listan. - KeyError – nyckel finns inte i ordboken (dict).

2) Skriv ut och titta

Använd print() för att se vad variabler innehåller när det blir fel.

Python
print("debug:", ålder)

3) Vanliga fel – exempel

SyntaxError

Python
print("Hej)     # saknar citattecken
# Fix: print("Hej")

NameError

Python
1
2
3
namn = "Ava"
print(namm)   # felstavat
# Fix: print(namn)

TypeError (text + tal)

Python
1
2
3
ålder = 12
print("Ålder: " + ålder)
# Fix: print("Ålder: " + str(ålder)) eller print(f"Ålder: {ålder}")

ValueError (fel input)

Python
tal = int(input("Skriv ett heltal: "))
# Om användaren skriver "hej" → ValueError

Lösning med try/except:

Python
1
2
3
4
5
6
7
while True:
    s = input("Skriv ett heltal: ")
    try:
        tal = int(s)
        break
    except ValueError:
        print("Skriv siffror, inte bokstäver.")

IndexError

Python
1
2
3
lista = [10, 20, 30]
print(lista[3])  # finns bara index 0,1,2
# Fix: kolla len(lista) först eller använd rätt index

KeyError

Python
1
2
3
person = {"namn": "Ava"}
print(person["ålder"])  # saknas
# Fix: person.get("ålder", "okänd")

4) Tips när du kör fast

  • Kommentera bort delar tills felet försvinner – då vet du var det sitter.
  • Testa små bitar i taget. Gör klart steg för steg.
  • Bygg hjälp-funktioner för inmatning (validering) och återanvänd.

5) Mini-mall: säker heltalsinmatning

Python
1
2
3
4
5
6
7
def fråga_int(prompt):
    while True:
        s = input(prompt)
        try:
            return int(s)
        except ValueError:
            print("Skriv ett heltal, tack!")