Hur man använder loopar

REPETITION

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 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:

  1. när man har en lista att loopa igenom, och
  2. 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_listaVariabeln 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 och i är lokala variabeler som kommer anta värdet respektive indexet för varje element i listan min_listaVariabelerna och i kan 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 , 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 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.

  • 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.

  1. 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.
  2. 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.
  3. 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.

 

SEE ALL Add a note
YOU
Add your Comment