För att kunna utnyttja enkortsdatorn behöver man något typ av program som utför någon typ av uppgift. Som jag beskrev i tidigare artikel (se Nybörjarspråk, vad ska jag välja?) är python ett utmärkt språk att börja med. I denna artikel ska jag beskriva de grundläggande i pythonprogrammering. Eftersom python är ett interpreterade språk så kan man programmera interaktivt dvs man kan starta interpretatorn och skriva in programmet som utförs direkt utan att man först måste kompilera det.

För att visa grunderna är det enklast att köra den interaktivt för att visa hur det fungerar. För att göra exemplen i denna artikel måste du antingen logga in på Raspberry PI och starta kommandot python

cmdpython

eller klicka på Terminal i WebIDE (se tidigare artikel) så att du får upp ett terminalfönster och skriv in python

webpython

 

Raden med 3 större-än tecken >>> visar att python är klar och väntar på inmatning.

Kommentarer

Kommentarer är information som inte har någon funktion för programmeringsspråket utan är avsett för den som läser programkoden.

Många som börjar programmera tycker att man inte behöver skriva några kommentarer eftersom man vet vad programmet gör. Men om någon annan ska sätta sig in i koden eller man ska göra några ändringar i koden efter ett längre tag så uppskattar man kommentarerna då dessa fungerar som stöd för att förstå vad olika saker i programmet gör.

I python används brädgårdstecknet # för att indikera att allt efter detta tecken på raden ska tolkas som kommentarer och inte innehåller någon kod.

kommentar

Som man kan se så fick vi en rad med 3 punkter …, detta betyder att python har inte fått nog med indata för att generera ett svar. I detta fall så skrev vi in en kommentar och detta är ingen kod som Python ska behandla så den frågar efter mer indata.

Alla tecken på en rad behandlas så länge som Python inte upptäcker ett #-tecken (om det inte finns i en sträng, förklaras längre fram)  så på raden 2+3 kommentar så får vi ett fel så Python inte känner igen kommentar och vet inte vad den ska tolka det som. Däremot på sista raden så avbryter Python att avkoda raden efter #-tecknet och utför bara det som stod före dvs 2+3.

Numeriska värden

I datorsammanhang delar man upp tal i heltal och flyttal, skillnaden mellan dessa är att ett flyttal har decimaler.Viktigt att veta är att när man blandar heltal och flyttal i Python så blir resultatet alltid ett flyttal.

Man använder sig av +, -, * och / för de fyra räknesätten. Beräkningen sker med prioritering dvs / och * är högre prioriterade än + och – dvs 2+5*2 blir 12 och inte 14 pga att 5*2 beräknas innan man lägger till 2 till summan. För att förändra detta kan man använda parenteser så (2+5)*2 blir 14. Allt som man lär sig i matematiken.

För att utföra beräkningen skriver man helt enkelt den efter >>> och trycker RETURN så får man svaret direkt på nästa rad.

pythontal

Men 50/9 = 5 stämmer ju inte??? Detta beror på det jag skrev tidigare om talen inte har någon decimaldel så tolkas de som heltal och om man delar 2 heltal så får man ett heltal till svar. 50/9 =5.555555….. och heltals delen av detta tal är 5, här gäller alltid att man avrundar nedåt.

Hur får man rätt svar? Ja minst ett av talen måste var ett flyttal, Python har en funktion som konverterar heltal till flyttal som heter float()

float

Varför blev inte första talet rätt? Jo vad vi gjorde var att konvertera svaret till flyttal dvs uträkningen skedde fortfarande med heltal. Det finns även en specialfunktion för att få modulo dvs resten av en heltals division och då använder man ett procenttecken %

modulus

Används ofta för att kontrollera om ett tal är delbart med ett annat, om modulo = 0 så är det delbart. I Python finns massor med inbyggda matematiska funktion som t.ex sinus logaritmen m.m se Python dokumentation för en utförlig lista. Viktigt att notera är att man använder sig av punkt . och inte som definierat i Svenskan komma , som separator mellan heltal och decimaldel.

Variablar

Som i alla andra programmeringsspråk har man tillgång till variabler som kan tilldelas ett värde. I Python använder man inte sig av någon typ av suffix för att definiera vad en variabel innehåller utan värdet som tilldelas sätter vilken typ av innehåll som en variabel har.

Numeriska variabler

variabler

 

Här ser man att allt fungera på samma sätt som i tidigare exempel, a och b tilldelades ett heltalsvärde så resultatet blir ett heltal. Notera att när man tilldelar a ett flyttalsvärde så ändras a till att vara en flyttalsvariabel. För att ta bort en definierad variabel använder man sig av kommandot del variable, så del a skulle ta bort variabeln a.

Strängar

Strängar är en definition av en icke-numeriskt värde och behandlas som en sekvens av tecken, siffror eller bokstäver. En sträng börjar men antingen med ett enkel-citat tecken ‘ eller en dubbel-citat tecken ” och avslutas med samma tecken som man började med.

string

 

Man kan slå ihop strängar genom att använda plustecknet + mellan strängarna

strings2

Det finns mycket mer special för att hantera strängar men det ingår inte i denna grundläggande beskrivning av Python. Det finns ett specialfall när man använder sig av 3 stycken ”’ eller “”” detta används när strängen ska sträcka sig över flera rader. Normalt får man ett felmeddelande om man trycker RETURN utan att avslutat en sträng.

strings3

I exemplet ovan se vi hur Python lagra strängar intern och hur den visar det som utdata. När man matade in den först så kunde man förväntat sig att se svaret som 3 rader, istället får man alla rader på samma rad med \n mellan varje rad. Om man tittar i Python dokumentationen för strängar så betyder \n samma sak som en ny rad men kodat. Endast när man använder funktionen print tolkar Python dessa special tecken

Samma kan man se med Svenska tecken som kodas men skrivs ut rätt när man använder print kommandot.

Subset av strängar

Ibland vill man hantera delar av strängar t.ex de 3 först tecknen i en sträng eller vilken är det första tecknet. I Python använder man sig av index i strängen med hjälp av hakparenterser [] efter variabelnamnet. Som i många andra språk är positionen för första tecknet i strängen 0.

Att definiera ett enstaka tecken i en sträng görs men variable[position], så variable[2] betyder tecknet vid position 2 (3 tecknet).

Man kan även definiera en delmängd av strängen  , syntaxen är variabelnamn[startpostion:slutposition] där startposition är index räknat från 0 och slutposition räknat från 1. Så variable[3:5] är 4:e och 5:e tecknet i strängen. Om man utelämnar startpostion, t.ex variable[:4] så betyder det de 4 första tecknen och om man utelämnar slutpostion t.ex variable[3:] så betyder det alla tecken från och med 4 tecknet. Värdet av ett subset kan inte ändras dvs variable[2]=”b” fungerar inte

Listor

En lista är ett antal element (av valfri typ t.ex strängar) separerade med kommatecken och omgivna av hakparenteser, t.ex a=[“adam”,”bertil”,”cecar”] är en lista med 3 element.

Åtkomsten av innehållet i listan påminner om hanteringen av substrängar där varje element i listan är samma sak som ett tecken i strängen, så a[0] år lika med “adam”

list1

 

När man sen har en lista finns ett antal funktioner som man kan använda på listan genom att ta variable.funktion(). En fullständig lista över funktioner för listor kan finns i Pythons Dokumentation om listor.

count() – räkna träffar i listan

count(element) räknar hur många gånger elementet finns i listan
listcount

I exemplet så finns adam 2 ggr, nisse 1 ggr och eva finns inte i listan

extend() – utöka lista med lista

extend(lista) lägger till lista till listan.

listextend

I exemple skapades en ny lista med sune, ivar och kalle genom att använda funktionen extend så lades allt i lista b till de som redan fanns i lista a. Ett annat sätt är att använda plustecknet + som innebär summering av listorna

listadd

insert() – lägga till element till lista

insert(postion, element) lägger till ett element efter en viss postion i listan.

listinsert

pop() – hämta element från lista

pop(position) returnerar värdet av elementet som har position position och samtidigt raderar det från listan.

listpop

 

append() – lägg till element till lista

append(element) lägger till elementet sist i listan

listappend

 

sort() – sortera elementen i stigande ordning i listan

sort() sorterar elementen i stigande ordning i listan

listsort

 

Som ni ser så kommer 2 före ‘1’ och detta beror på att numeriska värden räknas lägre än strängar så det är viktigt att hålla koll på vilka typer av värden som man har i listan.

reverse() – sortera elementen i sjunkande ordning i listan

reverse() sorterar elementen i sjunkande ordning i listan, sorteringen gäller som i sort att numeriska värdlen är lägre än sträng värden.

listreverse

del – ta bort element från listan

del är ett kommando och inte en funktion eftersom den inte returnerar ett svar. del a[2] tar bort det 3:e elementet i listan och del a tar bort hela listan

listdel

 

Tuples – enkla listor

tuples (närmaste på Svenska är mängd) är en enkel lista som inte kan manipuleras dvs endast läsbar.

Man kan använda plustecknet för att slå ihop 2 tuples men inget mer, används främst för statiska listor

turples

 

Sets – Unika listor

Sets är tuples där alla element är unika, man kan skapa ett set från listor och tuples med funktionen set(), resultatet oavsett om det är en lista eller tuples är en tuples. Alla dubbletter tar bort från resultatet.

sets

 

 

Dictionary – Koppla nycklar mor värden

Dictionary (närmast på Svenska är lexikon) används för att koppla nyckelord mot ett värden, anges inom krullparanteser {} och anges som nyckelord:värde med kommatecken mellan värdena.

lexikon

 

keys() funktionen returnerar en lista av alla nyckelord i lexikonet.