OBS!
Fönstret är för smalt för att använda pythonlabbet.se. Använd en enhet med tangentbord!
Referens
Klicka på en funktion för att läsa mer.
Grunder del 1
Syntax
Kort beskrivning
break
break avbryter kod som repeteras
Exempel
while True:
print('Du är fin!')
svar = input('Ska jag sluta säga det? Skriv ja i så fall.')
if svar == 'ja':
break
Förklaring
break avbryter kod som repeteras. Till exempel när while används.
continue
continue avbryter en repetition och påbörjar nästa
Exempel
i = 0
while i < 100:
if i % 2 == 0: # fortsätt med nästa repetition om i är delbart med 2
continue
print(i,'är ett udda tal')
Förklaring
continue avbryter körningen i nuvarande repetition/iteration och fortsätter med nästa repetition. Används i while-satser och for-satser.
elif
elif är en kombination av else och if
Exempel #1
temp = int(input('Vad är temperaturen?'))
if temp > 20:
print('Varmt och skönt!')
elif temp > 0: #om temp <= 20 och temp > 0
print('Inte jättekallt, men inte så varmt heller.')
Exempel #2
tal = int(input('Skriv in ett heltal'))
if tal == 0:
print('Du skrev in talet 0.')
elif tal > 0:
print('Du skrev in ett positivt tal.')
else:
print('Du skrev in ett negativt tal.')
Förklaring
elif används enbart efter if. Det är en kombination av else och if, det vill säga ANNARS (det ovan är falskt) och OM (ifall det nya villkoret är sant). Villkoret vid elif testas endast om villkoret vid if är falskt.
Syntax
elif villkor:
villkor
Obligatorisk. Något som är True eller False.
else
else kan användas sist i en if-sats
Exempel
ålder = int(input('Hur gammal är du?'))
if ålder >= 18:
print('Du är vuxen!')
else:
print('Du är inte vuxen.')
Förklaring
else används enbart i slutet av ett block som startar med if och koden under else körs endast om villkort vid if är falskt.
float()
Konverterar till typen float (decimaltal)
Exempel
float('0.01') #konverterar strängen '0.01' till 0.01
float(10) #konverterar heltalet 10 till 10.0
Förklaring
Funktionen float() konverterar argumentet till typen float (decimaltal). Vanligtvis är argumentet en textsträng eller ett heltal.
Syntax
float(number)
Argument
number
Ett tal på formen av en textsträng eller ett heltal.
if
if styr koden att göra olika beroende på ett villkor
Exempel #1
tal = 10
if tal == 10:
print('Talet är lika med 10.') #detta kommer skrivas ut
Exempel #2
tal = int(input('Skriv in ett heltal'))
if tal == 0:
print('Du skrev in talet 0.')
elif tal > 0:
print('Du skrev in ett positivt tal.')
else:
print('Du skrev in ett negativt tal.')
Förklaring
if används för att styra vad programmet gör beroende på ett villkor. Om villkoret är sant körs koden i if-blocket. För att styra
vad som händer om villkoret inte är sant, kan elif och else användas.
Syntax
if villkor:
villkor
Obligatorisk. Något som är True eller False.
input()
Tar emot indata från användaren
Exempel
svar = input('Vad heter du?') #Användarens svar sparas i variablen svar
Förklaring
Funktionen input() låter användaren skriva indata till programmet. Det går att skicka med en text som beskriver vad som ska skrivas in.
Syntax
input(prompt)
Argument
prompt
En valfri text användaren får se.
int()
Konverterar till typen int (heltal)
Exempel
int(42) #konverterar strängen '42' till 42
int(3.94) #konverterar decimaltalet 3.94 till 3
Förklaring
Funktionen int() konverterar argumentet till typen int (heltal). Vanligtvis är argumentet en textsträng eller ett decimaltal.
Syntax
int(number)
Argument
number
Ett tal på formen av en textsträng eller ett decimaltal.
print()
Skriver ut text eller en variabels innehåll på skärmen
Exempel #1
print('Hello World') #skriver ut "Hello World"
print(1+1) #skriver ut talet 2
print(x) #skriver ut innehållet i variablen x
Exempel #2
print('Hello World', end='') #skriver ut "Hello World" utan att göra ny rad
Exempel #3
print('Hej','på','dig') #Skriver ut "Hej på dig"
print('Hej','på','dig',sep=' | ',end='!') #skriver ut "Hej | på | dig!" utan ny rad på slutet.
Förklaring
Funktionen print() skriver ut en textsträng på skärmen. Försöker automatiskt omvandla det som ska skrivas ut till text.
Syntax
print(*object, sep=' ', end='\n')
Argument
*object
Obligatorisk. Ett eller flera objekt som ska skrivas ut. Separera objekten med kommatecken.
sep
Tecken för att avskilja objekten som skrivs ut. Som standard mellanrum.
end
Tecken som avslutar texten som skrivs ut. Som standard "\n" - vilket betyder ny rad.
randint()
Konverterar till typen randint (heltal)
Exempel
from random import randint
kast = randint(1,6) #ett slumptal 1-6
Förklaring
Funktionen randint() genererar ett slumptal mellan två heltalsvärden a och b så att a <= N <= b. randint finns i module random.
Syntax
randint(a,b)
Argument
a
Det minsta slumptal som kan genereras.
b
Det största slumptal som kan genereras.
round()
Avrundar ett tal
Exempel #1
round(7.89) #avrundar till 8
round(1.23) #avrundar till 1
Exempel #2
round(1.23456,2) #avrundar 1.23
round(1.23456,4) #avrundar till 1.2346
Förklaring
Funktionen round() avrundar ett decimaltal. Som standard till ett heltal, det går att ställa in round() till att avrunda till godtyckligt antal decimaler.
Syntax
round(number, decimalplaces = 0)
Argument
number
Obligatoriskt. Talet som ska avrundas.
decimalplaces
Antal decimaler som talet ska avrundas till. Som standard satt till 0.
str()
Konverterar till typen sträng
Exempel #1
str(2.71) #konverterar decimaltalet 2.71 till strängen '2.71'
str(10) #konverterar heltalet 10 till '10'
Exempel #2
ålder = 15
print('Du är ' + str(ålder) + ' år gammal.')
Förklaring
Funktionen str() konverterar argumentet till en sträng. Ofta är argumentet ett heltal eller ett decimaltal. Det kan också vara betydligt mer komplexa datatyper som går att konvertera till strängar.
Syntax
str(object)
Argument
object
Ett objekt som kan konverteras till en sträng.
while
while används för att repetera kod
Exempel
n = int(input('Hur många tal vill du skriva ut?'))
i = 1
while i <= n:
print(i)
i = i + 1
Förklaring
while repeterar koden i blocket så länge villkoret är sant.
Syntax
while villkor:
villkor
Obligatorisk. Något som är True eller False. Måste bli falskt någon gång för att while-blocket ska lämnas.
Grunder del 2
Syntax
Kort beskrivning
abs
Absolutbeloppet
Exempel
a = abs(5) # a = 5
b = abs(-5.2) # b = 5.2
Förklaring
abs tar absolutbeloppet av ett tal och returnerar därmed alltid ett positivt tal.
Syntax
abs(number)
Argument
number
Obligatorisk. Ett giltigt tal, heltal, flyttal eller komplexa tal.
append
Lägger till ett element till en lista
Exempel #1
lista = [1,2,3]
lista.append(4) # nu [1,2,3,4]
Exempel #2
lista = ["ett",2,3.0] # i Python kan en lista bestå av olika typer
lista.append([1,2,3,4]) # nu ["ett",2,3.0,[1,2,3,4]]
Förklaring
append lägger till ett element sist i en lista. Listan måste redan finnas. Den kan vara tom.
Syntax
lista.append(element)
Argument
element
Obligatorisk. Elementet som ska läggas till sist i listan.
def
Definierar en funktion
Exempel #1
def skriv_ut_hej():
print('Hej!')
Exempel #2
def hej_namn(namn):
print('Hej ' + namn)
hej_namn('Tanja') #Skriver ut "Hej Tanja"
hej_namn('Emil') #Skriver ut "Hej Emil"
def definierar en ny funktion. En funktion kan ha argument som du kan använda för att skicka data till funktionen.
Funktionen kan också returnera data med hjälp av return.
for
for används för att repetera kod
Exempel #1
for i in range(10): # i går från 0 till 9
print(i) # körs tio gånger
Exempel #2
for tecken in 'pythonlabbet.se':
print(tecken)
Exempel #3
for element in [1,3,3,7]:
print(element)
Förklaring
for repeterar koden i blocket för alla element i ett objekt. Objektet är till exempel en range, lista eller sträng.
Syntax
for variable in object:
variable
Obligatorisk. Variabeln ändrar innehåll till nuvarande element för varje iteration.
object
Obligatorisk. Objektet som ska itereras över. Exempelvis en lista.
len returnerar längden eller antal element i ett objekt som till exempel en sträng, lista, tupel, lexikon eller en range.
Syntax
len(object)
Argument
object
Obligatorisk. Objektet vars längd som ska returneras.
max
Returnerar det största elementet
Exempel #1
lista = [1,2,3,4]
störst = max(lista) # störst = 4
Exempel #2
max(a,0) # 0 om a är negativt, annars a
Förklaring
max letar upp det största elementet.
Syntax
max(object)
Argument
object
Obligatorisk. Ett objekt som det går att iterera över.
min
Returnerar det minsta elementet
Exempel #1
lista = [1,2,3,4]
minst = min(lista) # minst = 1
Exempel #2
min(a,0) # 0 om a är positivt, annars a
Förklaring
min letar upp det minsta elementet.
Syntax
min(object)
Argument
object
Obligatorisk. Ett objekt som det går att iterera över.
pop
Tar bort ett element från en lista
Exempel #1
lista = [1,2,3]
lista.pop() # nu [1,2]
Exempel #2
lista = [1,2,3]
lista.pop(0) # nu [2,3]
Förklaring
pop tar bort ett element på en given plats från en lista.
Syntax
lista.pop(element)
Argument
element
Valfri. Index på elementet som ska tas bort ur listan. Standardvärde är -1 (sista elementet).
return
Returnerar data från en funktion
Exempel
def kvadrera_addera(x,y):
return x**2 + y**2
resultat = kvadrera_addera(5,7)
print('Kvadrera och addera 5 och 7 ger', resultat)
Förklaring
return skickar tillbaka data från en funktion till platsen där den anropades.
sum
Summerar elementen i ett objekt
Exempel #1
lista = [1,2,3,4]
summa = sum(lista) # summa = 10
Exempel #2
tupel = (1,2,3)
summa = sum(tupel) # summa = 6
Förklaring
sum adderar alla element i ett objekt till en summa.
Syntax
sum(object)
Argument
object
Obligatorisk. Ett objekt som det går att iterera över.
Mer om listor
I det här avsnittet kommer du att lära dig att
Läsa delar av en lista eller sträng
Skapa listor enkelt med Pythons listbyggare
Använda listor inuti listor
Dellistor eller del av en sträng
I Python är det enkelt att skapa en dellista av en lista eller en delsträng av en sträng. På engelska heter det slicing.
Syntaxen som används är variabel[start:slut] där start är det index som delen börjar på och slut är där delen slutar. Indexet slut är inte inkluderat.
Exempel
Några exempel på hur syntaxen kan användas för att skapa en delsträng.
idag = '2024-09-11'
år = idag[0:4] #index 0 till och med 3
månad = idag[5:7] #index 5 och 6
dag = idag[8:10] #index 8 och 9
idag = '2024-09-11'
år = idag[0:4]
månad = idag[5:7]
dag = idag[8:10]
print(år, månad, dag)
Exempel
Dellistor skapas på samma sätt som delsträngar. Tänk på att första elementet i listan har index 0.
# listan anger tider i os-finalen i Tokyo på 100 meter herrar.
tider = ['9.80', '9.84', '9.89', '9.93', '9.95', '9.95', 'DNF', 'DQ']
tid_1_3 = tider[0:3] # tre bäst tiderna i en dellista
tid_4_6 = tider[3:6] # tiderna på plats 4 till 6
# listan anger tider i os-finalen i Tokyo på 100 meter herrar.
tider = ['9.80', '9.84', '9.89', '9.93', '9.95', '9.95', 'DNF', 'DQ']
tid_1_3 = tider[0:3] # tre bäst tiderna i en dellista
tid_4_6 = tider[3:6] # tiderna på plats 4 till 6
print(tid_1_3)
print(tid_4_6)
Läs koden nedan och försök lista ut vad programmet skriver ut. Kör programmet efter du svarat och se om du fick rätt.
-- Programmets utskrifter --
Fråga: Vad kommer programmet ovan att skriva ut?
nty
nty P
ty P
ty Py
Fler sätt att dela på
I syntaxen variabel[start:slut] går att det utelämna start eller slut. Ja, det går faktiskt att utelämna båda två för att få med allt.
Om start utelämnas så tas allt med från början upp till slut. Om slut utelämnas tas allt med från start till slutet.
Exempel
Exempel på slicing där startindex och slutindex utelämnas.
s = 'Monty Python'
# Ta med tecken från början upp till index 5
början = s[:5]
# Ta med tecken från index 6 till slutet
slutet = s[6:]
s = 'Monty Python'
# Ta med tecken från början upp till index 5
början = s[:5]
# Ta med tecken från index 6 till slutet
slutet = s[6:]
print(början)
print(slutet)
Kommer du ihåg att negativa index kan använda i listor och strängar? Negativa index innebär att vi räknar positionen bakifrån, -1 betyder det sista elementet.
Det går bra att använda negativa index när vi skapar delsträngar och dellistor också.
Exempel
Skapa en dellista med negativa index.
s = 'Monty Python'
delsträng = s[1:-1] #ta inte med första och sista tecknet
s = 'Monty Python'
delsträng = s[1:-1] #ta inte med första och sista tecknet
print(delsträng)
Läs koden nedan och försök lista ut vad programmet skriver ut. Kör programmet efter du svarat och se om du fick rätt.
-- Programmets utskrifter --
Fråga: Vad kommer programmet ovan att skriva ut?
Monty Pyth Mo
Monty Pyth M
Monty Pytho Mo
Monty Pytho M
Listbyggare
Listbyggare används för att skapa listor genom att bara skriva en rad kod.
Det engelska namnet för listbyggare är list comprehension och är troligtvis det du kommer stöta på mest.
Listbyggare kombinerar syntaxen för att skapa en lista [] med syntaxen för en for-sats.
Senare ska vi se att det går att använda en if-sats också, men vi börjar med enklare exempel.
Exempel
Skapar en lista med fem identiska element.
lista = [0 for i in range(5)]
lista = [0 for i in range(5)]
print(lista)
I exemplet ovan användes aldrig räknaren i. Vi ser vad som händer om vi använder i istället för noll.
Exempel
Fler exempel på listbyggare.
lista_1 = [i for i in range(5)] # [0,1,2,3,4]
lista_2 = [i*5 for i in range(5)] # [0,5,10,15,20]
lista_1 = [i for i in range(5)] # [0,1,2,3,4]
lista_2 = [i*5 for i in range(5)] # [0,5,10,15,20]
print(lista_1)
print(lista_2)
Nu ska vi se hur vi kan använda en if-sats inuti en listbyggare. Det kan till exempel användas för att filtrera ut element i en lista.
Exempel
Listbyggare med if-sats.
namn = ['Maria', 'Anna', 'Margareta', 'Elisabeth', 'Eva', 'Kristina']
#skapa en ny lista med namn som slutar på a
slutar_på_a = [n for n in namn if n[-1] == 'a']
#lista med namn som är max fem tecken långa
korta_namn = [n for n in namn if len(n) <= 5]
namn = ['Maria', 'Anna', 'Margareta', 'Elisabeth', 'Eva', 'Kristina']
#skapa en ny lista med namn som slutar på a
slutar_på_a = [n for n in namn if n[-1] == 'a']
#lista med namn som är max fem tecken långa
korta_namn = [n for n in namn if len(n) <= 5]
print(slutar_på_a)
print(korta_namn)
Listbyggare kan vara lite luriga att förstå sig på, speciellt om du kan något annat programmeringsspråk där det inte finns.
Om du har en listbyggare [x for x in lista if x < 10] så kan du tänka på det så här:
Lägg in elementet x i listan för alla element x i lista där x är mindre än 10.
Vi skapar alltså en ny lista från lista med alla element som är mindre än 10.
Listbyggare är inte nödvändigt att kunna eftersom det alltid går att göra samma sak med en vanlig for-sats eller while-sats.
Men för vana Pythonprogrammare som ofta arbetar med listor är det en trevlig funktion.
Ändra i koden så att listbyggaren filtrerar bort alla negativa tal.
-- Programmets utskrifter --
En lista av listor
Tänk dig en vanlig lista och tänk sedan att varje element i den listan är en ny lista. Det är en lista av listor eller 2D-lista.
En 2D-lista passar speciellt bra för modeller av något i två dimensioner. En vanlig bild är ett bra exempel.
För att iterera igenom alla elementen i en 2D-lista brukar en nästlad for-sats användas.
Exempel
Skapa en 2D-lista med två rader och tre kolumner. De två elementen i listan representerar rader. De elementen är i sin tur också listor.
lista_2d = [ [1, 2, 3], [4, 5, 6] ]
lista_2d = [ [1, 2, 3], [4, 5, 6] ]
print(lista_2d)
#eller för att se 2d-strukturen bättre:
print('Ett annat sätt att skriva ut på:')
print(lista_2d[0], lista_2d[1], sep='\n')
Exempel
Variabeln bild är en 2D-lista som representerar en enkel bild.
Varje pixel är antingen # eller ett blanksteg. Bilden har sju pixlar på bredden och sex pixlar på höjden.
2D-listan har alltså sex rader och varje rad innehåller sju kolumner.
Vi skriver ut bilden med en nästlad for-sats.
En riktig bild fungerar på samma sätt. Elementen brukar dock vara ett tal som beskriver färgen på den pixeln.
bild = [
[' ', '#', '#', ' ', '#', '#', ' '],
['#', ' ', ' ', '#', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', '#'],
[' ', '#', ' ', ' ', ' ', '#', ' '],
[' ', ' ', '#', ' ', '#', ' ', ' '],
[' ', ' ', ' ', '#', ' ', ' ', ' ']
]
for rad in bild: #
for kolumn in rad:
print(kolumn, end='')
print() #ny rad i utskriften för varje utskriven rad i bilden
bild = [
[' ', '#', '#', ' ', '#', '#', ' '],
['#', ' ', ' ', '#', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', '#'],
[' ', '#', ' ', ' ', ' ', '#', ' '],
[' ', ' ', '#', ' ', '#', ' ', ' '],
[' ', ' ', ' ', '#', ' ', ' ', ' ']
]
for rad in bild: #
for kolumn in rad:
print(kolumn, end='')
print() #ny rad i utskriften för varje utskriven rad i bilden