Förra veckan lärde vi oss om listor. Hur man skapar, fyller och itererar över dessa. Vi gick bland annat igenom:
Listor är en datatyp/struktur som kan innehålla flera andra datatyper på ett ordnat sätt
Det som lagras i en lista kallas listans element
Ett elements plats i en lista kallas dess index och börjar alltid räknas från 0
Några fördelar med listor är:
Man kan samla data som hör ihop på ett gemensamt ställe
Datan får en inbördes ordning i en lista
Det går effektivt att iterera igenom informationen i listan för att göra beräkningar
Den senaste punkten leder oss in på veckans tema som är loopar. Vi ska nu lära oss lite om två typer av loopar samt när och hur de kan användas på olika sätt.
LOOPAR – INTRODUKTION
Loopar är ett grundläggande verktyg inom programmering som tillåter en att upprepa många liknande instruktioner efter varandra. Vi har sett att det bland annat är användbart för att loopa igenom element i en lista, men det finns även andra tillämpningar. Vi kommer nu presentera två sorters loopar while och for. Vi ska även se när det är lämpligt att använda respektive samt på vilka olika sätt de båda kan användas. Vi vill även poängtera att olika programmeringsspråk använder och skriver loopar på lite olika sätt, men vi ska nu lära oss hur man brukar göra i Python.
While-loopar – används när man inte vet hur många gånger man skall upprepa sin sekvens
For-loopar – används när man vet hur många gånger man skall upprepa sin sekvens
WHILE – NÄR MAN INTE VET HUR LÄNGE MAN KOMMER LOOPA
While upprepar en sekvens så länge som ett villkor är uppfyllt. Loophuvudet skrivs som:
while ( ):
Mellan parenteserna skrivs ett villkor på samma sätt som vi lärt oss i if-satserna. Så länge villkoret är uppfyllt kommer koden i loopkroppen upprepas. Precis som för funktioner skall loopens kropp skrivas med indentering.
while ( ):
#din kod
Då loopen upprepas så länge villkoret är Trueär det viktigt att försäkra sig om att villkoret kommer kunna bli Falseförr eller senare, eftersom datorn annars kommer fastna i en oändlig loop.
FOR – NÄR MAN VET HUR LÄNGE MAN KOMMER LOOPA
For-loopar använder vi när vi vet hur många gånger vi kommer vilja upprepa något. Typiskt kan for loopar i Python delas in i två kategorier:
när man har en lista att loopa igenom, och
när man inte har en lista att loopa igenom
FOR-LOOP – MED LISTA
När vi vill loopa igenom alla element i en lista skriver vi:
for x in min_lista: # gör något med x
Där x är en lokal variabel som kommer anta värdet av varje element i listan min_lista. Variabeln x kan givetvis döpas till vad som helst.
Ett specialfall av detta är när man i sin loopkropp både behöver tillgång till varje elements värde och index. Då skriver man istället:
for i, x in enumerate(min_lista): # gör något med x och i
Där x och i är lokala variabeler som kommer anta värdet respektive indexet för varje element i listan min_lista. Variabelerna x och ikan givetvis döpas till vad som helst.
FOR-LOOP – UTAN LISTA
När man vet hur länge något skall upprepas men man inte har någon lista att jobba med, skriver man istället:
for i in range( ): # gör något
Här använder vi en lokal variabel i (som kan döpas till vad man vill) som räknare, och innanför parenteserna för range() skriver vi in argument för att bestämma hur många och vilka värden för i vi kommer loopa igenom. Funktionen range() kan ta tre olika antal argument:
Ett argument: for i in range(5): print(i) Kommer skriva ut siffrorna 0 – 4. När man anger ett argument i range() bestämmer man alltså
upp till vilket index, i kommer upprepas.
Två argument: for i in range(2,5): print(i) Kommer skriva ut siffrorna 2 – 4. När man anger två argument i range() bestämmer man alltså
från och med vilket index, och
upp till vilket index, i kommer upprepas.
Tre argument: for i in range(2,10,2): print(i) Kommer skriva ut siffrorna 2 , 4 , 6 , 8. När man anger tre argument i range() bestämmer man alltså
från och med vilket index,
upp till vilket index, och
med vilken steglängd i kommer upprepas.
MODULO % – REST VID DIVISION
Modulooperatorn är användbar för att kontrollera jämn delbarhet mellan tal.
12 % 3 Ger exempelvis resultatet 0, då 12 är jämnt delbart med 3, medan
13 % 5 Ger resultatet3, då 13 kan delas med 5 två gånger men då med resten 3
VECKANS ÖVNING – PRIMTAL
Denna vecka ska vi använda våra nyförvärvade kunskaper om loopar för att skriva ett program som tar emot ett heltal och returnerar en boolean (True / False) beroende på om det ingående talet var ett primtal eller inte.
Ett primtal är ett tal som endast är jämt delbart med sig självt och 1.
1 självt brukar inte räknas som primtal.
Nedan har ni fått hjälp med funktionshuvudet för en sådan funktion om_prim(n), och ni skall nu skriva själva funktionskroppen. Ni får även en bit kod längst ned i programmet för att verifiera att er funktion fungerar. Principen är att vi antar att n är ett primtal så länge vi inte hittar något tal som n är jämt delbart med.
Vi vet att 1 inte är ett primtal, så först vill vi kontrollera om n är lika med 1, i så fall skall vår funktion returnera False.
Annars vill vi kolla om n är delbart med något tal från och med 2 upp till n, i så fall är n inte heller något primtal. Vilken typ av loop vill vi använda här, vet vi hur många gånger vi ska loopa? För att kontrollera om n är jämt delbart med olika tal är det användbart att använda just % operatorn.
Om n inte var 1 och det inte fanns något tal som n var jämt delbart med, betyder det att n måste vara ett primtal, alltså ska vår funktion här i så fall returnera True.
REPETITION
Förra veckan lärde vi oss om listor. Hur man skapar, fyller och itererar över dessa. Vi gick bland annat igenom:
Den senaste punkten leder oss in på veckans tema som är loopar. Vi ska nu lära oss lite om två typer av loopar samt när och hur de kan användas på olika sätt.
LOOPAR – INTRODUKTION
Loopar är ett grundläggande verktyg inom programmering som tillåter en att upprepa många liknande instruktioner efter varandra. Vi har sett att det bland annat är användbart för att loopa igenom element i en lista, men det finns även andra tillämpningar. Vi kommer nu presentera två sorters loopar
while
ochfor
. Vi ska även se när det är lämpligt att använda respektive samt på vilka olika sätt de båda kan användas. Vi vill även poängtera att olika programmeringsspråk använder och skriver loopar på lite olika sätt, men vi ska nu lära oss hur man brukar göra i Python.While-loopar – används när man inte vet hur många gånger man skall upprepa sin sekvens
For-loopar – används när man vet hur många gånger man skall upprepa sin sekvens
WHILE – NÄR MAN INTE VET HUR LÄNGE MAN KOMMER LOOPA
While upprepar en sekvens så länge som ett villkor är uppfyllt. Loophuvudet skrivs som:
while ( ):
Mellan parenteserna skrivs ett villkor på samma sätt som vi lärt oss i if-satserna. Så länge villkoret är uppfyllt kommer koden i loopkroppen upprepas. Precis som för funktioner skall loopens kropp skrivas med indentering.
while ( ):
#din kod
Då loopen upprepas så länge villkoret är
är det viktigt att försäkra sig om att villkoret kommer kunna bli
True
False
förr eller senare, eftersom datorn annars kommer fastna i en oändlig loop.FOR – NÄR MAN VET HUR LÄNGE MAN KOMMER LOOPA
For-loopar använder vi när vi vet hur många gånger vi kommer vilja upprepa något. Typiskt kan for loopar i Python delas in i två kategorier:
FOR-LOOP – MED LISTA
När vi vill loopa igenom alla element i en lista skriver vi:
for x in min_lista:
# gör något med x
Där
x
är en lokal variabel som kommer anta värdet av varje element i listanmin_lista
.
Variabelnx
kan givetvis döpas till vad som helst.Ett specialfall av detta är när man i sin loopkropp både behöver tillgång till varje elements värde och index. Då skriver man istället:
for i, x in enumerate(min_lista):
# gör något med x och i
Där x
och i är lokala variabeler som kommer anta värdet respektive indexet för varje element i listan
och i kan givetvis döpas till vad som helst.min_lista
.
Variabelerna xFOR-LOOP – UTAN LISTA
När man vet hur länge något skall upprepas men man inte har någon lista att jobba med, skriver man istället:
for i in range( ):
# gör något
Här använder vi en lokal variabel
i
(som kan döpas till vad man vill) som räknare, och innanför parenteserna förrange()
skriver vi in argument för att bestämma hur många och vilka värden föri
vi kommer loopa igenom. Funktionenrange()
kan ta tre olika antal argument:Ett argument:
for i in range(5):
print(i)
Kommer skriva ut siffrorna0
–4
. När man anger ett argument irange()
bestämmer man alltsåi
kommer upprepas.Två argument:
for i in range(2,5):
print(i)
Kommer skriva ut siffrorna 2 –4
. När man anger två argument irange()
bestämmer man alltsåi
kommer upprepas.Tre argument:
for i in range(2,10,2):
print(i)
Kommer skriva ut siffrorna 2 ,4
,6
,8
. När man anger tre argument irange()
bestämmer man alltsåi
kommer upprepas.MODULO % – REST VID DIVISION
Modulooperatorn är användbar för att kontrollera jämn delbarhet mellan tal.
12 % 3
Ger exempelvis resultatet 0, då 12 är jämnt delbart med 3, medan13 % 5
Ger resultatet 3, då 13 kan delas med 5 två gånger men då med resten 3
VECKANS ÖVNING – PRIMTAL
Denna vecka ska vi använda våra nyförvärvade kunskaper om loopar för att skriva ett program som tar emot ett heltal och returnerar en boolean (
True
/False
) beroende på om det ingående talet var ett primtal eller inte.Nedan har ni fått hjälp med funktionshuvudet för en sådan funktion
om_prim(n)
, och ni skall nu skriva själva funktionskroppen. Ni får även en bit kod längst ned i programmet för att verifiera att er funktion fungerar. Principen är att vi antar attn
är ett primtal så länge vi inte hittar något tal somn
är jämt delbart med.n
är lika med 1, i så fall skall vår funktion returneraFalse
.n
är delbart med något tal från och med 2 upp tilln
, i så fall ärn
inte heller något primtal. Vilken typ av loop vill vi använda här, vet vi hur många gånger vi ska loopa? För att kontrollera omn
är jämt delbart med olika tal är det användbart att använda just%
operatorn.n
inte var 1 och det inte fanns något tal somn
var jämt delbart med, betyder det attn
måste vara ett primtal, alltså ska vår funktion här i så fall returneraTrue
.