
Variabler: Felsökning (Python-programmering)

Uppgradera för mer innehåll
Sant eller falskt? "NameError" betyder att vi använt samma variabelnamn flera gånger.
Lina har skrivit ett program det här är hennes pseudokod: Anteckna namn och ålder för två användare. Räkna ut åldersskillnaden mellan användarna… och skriv ut resultatet. Här är pseudokoden översatt till Python-kod och sparad med namnet program Vi testar koden skriver in namn och ålder på två personer... Då får vi upp ett felmeddelande! ”program line” fem. Programmet har fel på line fem.
Det är ett NameError. Namnet age1 ”is not defined”? Line fem betyder femte instruktionen. Vi letar reda på den. Första Andra Tredje Fjärde Femte instruktionen är result är lika med age1 minus age2 Den här instruktionen innehåller alltså namnfel.
age1 är inte definierat. Det betyder att age1 variabeln inte är skapad när den ska användas i instruktion fem. Men... vi skapade - deklarerade - variabeln age1 här uppe i koden. Det finns en liten skillnad.
Ser du? När vi deklarerade variabeln så skrev vi med stort A, men försökte använda en variabel med litet “a” Så vi använde en variabel som inte finns! I Python spelar stor och liten bokstav roll när vi ger variabler namn. Vi ändrar till ett litet “a” och så testar vi koden igen. När vi matat in namn och åldrar så verkar instruktion fem fungera.
Det problemet är löst. Bra! Men vi har fått ett nytt felmeddelande den här gången är det instruktion nummer sex som det är något fel på. Nu är det ett TypeError. Fel typ av variabel must be str Betyder att något måste vara en textsträng.
not int Och det här betyder att det inte får vara heltal. Instruktion nummer sex är print instruktionen. Inuti parentesen i print instruktionen finns flera variabler. Vad är heltal i instruktionen? n1 är text är” är text, result fick vi fram genom att ta ett heltal minus ett annat heltal...
det blir ett heltal och inte text. Vi har hittat heltalet som ska vara en text! Nu ska vi göra om result från variabeltypen heltal till textsträng. Det här fixar vi enkelt. Skriv str och parentes före result och avsluta med parentes.
Vi testar koden igen. Skriver in namn och ålder som förra gången. Lina 16 Maria 15 Lina är ett år äldre än Maria Nu fungerar det, utan några felmeddelanden alls! Om du vill öva mer på hur olika felmeddelanden kan se ut, kan du medvetet skriva in fel i koden och se vilka felmeddelanden du får.