Introduktion till Python
Här kommer jag att gå igenom de absoluta grunderna i Python. Vi kommer att göra några små enkla program som exempel för att bättre förstå vad det är vi går igenom. Vi kommer gå igenom bland annat syntaxen i Python, variabler, if-satser, loopar med mera.
Kort om syntaxen
Hela Pythons syntax bygger på korrekt indentering av koden. Många andra programmeringsspråk använder klammerparenteser för att markera kodblock som hör till if-satser och loopar och bryr sig inte ett dugg om indenteringarna. Detta använder inte Python, istället styrs allting av indenteringarna. Detta har den fina sidoeffekten att koden alltid blir snyggt formaterad och lättläslig.
I början kan dock indenteringarna te sig lite märkliga för den som är helt ny på programmering. Särskilt rörigt blir det om man råkar blanda mellanslag och tabb-tecken som indenteringar. I ett och samma Python-program måste man nämligen vara konsekvent med indenteringarna. Antingen använder man tabb-tecken, eller så använder man mellanslag (antalet mellanslag måste också vara detsamma i hela programmet).
Var ska då koden indenteras? Så fort vi har en loop eller en if-sats, eller en annan rad som slutar med ett kolon (:) skall de rader som hör ihop med if-satsen eller loopen indenteras. Så fort indenteringen upphör är vi utanför loopen eller if-satsen igen.
#!/usr/bin/env python3
if (3 < 10):
print("Tre är mindre än tio")
print("Inuti if-satsen")
print("Nu är vi utanför if-satsen")
Detta enkla program ger utskriften
Tre är mindre än tio
Inuti if-satsen
Nu är vi utanför if-satsen
Långa rader som delas upp i kortare rader behöver oftast inte indenteras, däremot bör man göra så ändå för att det lättare ska gå att se att de båda raderna hör ihop med varandra.
#!/usr/bin/env python3
print("Hej på er " +
"Kalle & Lisa")
De båda raderna ovan kommer att skrivas ut på en och samma rad. Utskriften kommer alltså att vara:
Hej på er Kalle & Lisa
Notera ovan att vi alltid måste ha matchande parenteser runt funktionsanrop
(detta måste man ha i alla programmeringsspråk). Det är lätt att missa som ny
programmerare och orsaker ofta mycket huvudvärk. print()
-raden ovan har en
öppningsparentes på den första raden och en slutparentes på den andra
raden. Notera också att strängar omges av citattecken, precis som de flesta
andra språk. Strängar slås samman med plustecknet (+).
Kommentarer
Kommentarer i koden är text som helt ignoreras av Python och används för att dokumentera koden. Utan kommentarer kan ett program bli mycket svårt att förstå. I Python skriver vi enstaka kommentarer med brädgången (#). Långa kommentarer som löper över flera rader skrivs med tre styck enkelcitat-tecken (‘).
#!/usr/bin/env python3
# Detta är en kommentar på en enda rad
'''Denna kommentaren är mycket längre
och sträcker sig över flera rader.
Dessa är bra för att skriva en inledande
text om programmet, t.ex. förklara vad
programmet gör för något'''
print("Hej hej...")
Variabeldeklarationer
Variabler deklareras och sätts i ett och samma moment i Python. Se exemplen här nedanför. Vi behöver alltså inte själva explicit ange vad som ska vara heltal, flyttal och så vidare. Om en variabel sätts till ett flyttal, blir också datatypen automatiskt ett flyttal.
#!/usr/bin/env python3
namn = "Kalle" # En sträng
pi = 3.141592 # Ett flyttal
veckodagar = 7 # Heltal
När vi använder variablerna i vår kod skriver i bara namnet på variabeln, vi behöver alltså inte använda dollartecken eller liknande för att beteckna att det är en variabel vi vill komma åt.
#!/usr/bin/env python3
namn = "Kalle" # En sträng
pi = 3.141592 # Ett flyttal
veckodagar = 7 # Heltal
print("Antalet dagar i veckan är " + str(veckodagar))
diameter = 5
omkrets = diameter * pi
print("Omkretsen för cirkeln är " + str(omkrets) +
" om diametern är " + str(diameter))
Kör vi detta programmet blir utskriften enligt nedan.
Antalet dagar i veckan är 7
Omkretsen för cirkeln är 15.70796 om diametern är 5
Notera i koden ovan att vi var tvungna att tala om för Python att vi ville skriva
ut variablerna veckodagar, omkrets och diameter som strängar med
nyckelordet str()
. Detta beror på att vi i en och samma print()
-sats inte kan
blanda strängar och andra typer som heltal och flyttal. Därför måste vi göra
om variablerna vid utskrift till strängar istället för heltal och flyttal. Däremot
kommer inte innehållet i variablerna att ändras till strängar, de är fortfarande
heltal och flyttal. Det är bara vid utskriften på skärmen de skrivs ut som
strängar.
Kort om if-satser och loopar
Precis som i alla andra språk kan vi nästla flera nivåer av loopar och if-satser. Här är det extra viktigt att hålla ordning på indenteringarna för att det hela ska fungera. Ofta har man if-satser inuti en loop för att testa olika värden. Vi måste då indentera både loopen och if-satsen som i exemplet nedan.
#!/usr/bin/env python3
'''Lista alla udda tal mellan
1 och 20 genom att använda modulo-operatorn
(%) för testa om det blir någon rest'''
for x in range(1,21):
if(x % 2 != 0): # != betyder 'inte lika med'
print(x)
Utskriften från detta programmet blir:
1
3
5
7
9
11
13
15
17
19
Här använde vi for
-loopen för att loopa igenom alla tal mellan 1
och 20. range()
-funktionen stegar igenom de talen vi anger, från och med det
första talet (1), upp till men inte inkluderat det sista talet (21). Endast de
tal som ger en rest vid division med två kommer att skrivas ut på skärmen. Dessa
är de talen som är udda.
Det finns en annan typ av loop också, nämligen while
-loopen som används på ett
lite annat sätt än for
-loopen. Medan for
-loopen loopar igenom att
förutbestämt antal element, loopar while
-loopen tills dessa att ett uttryck
inte längre är sant.
#!/usr/bin/python3
raknare = 0
while (raknare <= 10): # Medan raknare är mindre än eller lika med 10
print("Vi är nu på " + str(raknare)) # Skriv ut raknare
raknare = raknare + 1 # Öka raknare med ett för varje varv
print("Klart!!") # Utanför loopen
Utskriften från detta lilla programmet blir:
Vi är nu på 0
Vi är nu på 1
Vi är nu på 2
Vi är nu på 3
Vi är nu på 4
Vi är nu på 5
Vi är nu på 6
Vi är nu på 7
Vi är nu på 8
Vi är nu på 9
Vi är nu på 10
Klart!!
I koden ovan såg vi också att loop-raderna alltid avslutas med ett kolon (:).
Flera val i if-satser
Vi behöver ofta göra program som kan ta flera olika vägar i en if-sats och inte
bara ett enda val. Vid sådana tillfällen använder vi elif
och else
. Dessa
if
-satser hör då samman, och följer if
-satserna uppifrån och ned, i tur och
ordning. På första if
eller elif
-satsen som är sann, kommer hela den
sammanhängande if
-satsen att stanna. elif
är en förkortning av else if.
#!/usr/bin/env python3
plats = input("Vart bor du? ")
if (plats == "Ankeborg"):
print("Du är en karraktär från Disney")
elif (plats == "Romulus"):
print("Du är en romulan från Star Trek")
elif (plats == "Gotham City"):
print("Är du Batman?")
else:
print("Du kanske rent av bor i den riktiga världen?")
Om vi kör ovanstående stycke kod och svarar Ankeborg, Romulus eller Gotham City
skrivs meningarna ut som hör till den aktuella if
- eller elif
-satsen. Svarar
vi något annat, till exempel Helsingborg, skrivs texten som hör till
else
-satsen ut.
Här såg vi också att alla if
-rader avslutas med ett kolon (:) och all kod som
hör till if
-satserna indenteras.
Var också noga med att alltid ange dubbla likhetstecken (==) som i koden ovan när vi ska göra jämförelser. Detta är också något man ofta gör fel på i början när man är ny. Använder man endast ett likhetstecken betyder det att vi ska tilldela ett värde till en variabel. Dubbla likhetstecken är det som är jämförelseoperatorn lika med.
Avslutning
Detta var en mycket kort introduktion till några av de viktigaste delarna i Python och programmering. Vill du lära dig mer så ta gärna en titta på de övriga inläggen om Python här på sidan.
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Skapa fristående binärer av Python-skript
Docker har blivit det nya sättet att paketera och köra Python-skript, även när skripten körs från exempelvis ett cronjob. Men ibland behöver vi inte en hel Docker-miljö med den overhead det innebär för väldigt små skript. Då är det smidigare att göra om skriptet till en körbar binärfil. Då kan vi även enkelt flytta filen mellan olika Linuxsystem.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
-
Pythonmiljö i Docker
Ett vanligt användningsområde för Docker är att skapa och köra virtuella Pythonmiljöer. Med en Dockerfile och Docker Compose kan vi automatisera hela processen, från skapandet av miljön till exekveringen.
-
Python och trigonometri
Lite uppfräschning av trigonometri och Python är aldrig fel. Här får vi lära oss hur man kan rita upp rätvinkliga trianglar – direkt i Python – om vi känner till två av sidorna. För detta kommer vi att använda modulerna turtle och math.
-
Python i Windows utan installation
Det går att använda Python i Windows, även utan att installera det. Detta är användbart om du har en dator där du inte har rättigheter att installera program. Det kan till exempel vara en skoldator eller arbetsdator.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.