for-loopen#

En vanlig situation är att man vill upprepa några satser flera gånger. För detta använder man så kallade iterationssatser även kallade loopar.

Python har två olika sådana: while- och for-satserna. Här beskrivs for-satsen.

Observera: Exemplen här är avsedda att beskriva just for-satsens funktion. Det innebär att det finns andra och ibland även på bättre sätt att lösa problemen på.

for-satsen är orienterad mot att låta en variabel successivt få ett antal olika värden.

Exempel 1: Gå igenom en lista med strängar.#

Antag att vi har en lista med namn och vill skriva ut en personlig hälsning till dessa.

guests = ['Anna', 'Eva', 'Lars', 'Anders']
for name in guests:
    print('Välkommen ' + name)

Exempel 2: Summera kvadraterna på talen i en lista.#

Antag att vi vill summera kvadraterna på talen i en lista.

primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]
sum = 0
for p in primes:
    sum += p*p
print(f'Summan av de {len(primes)} ' +
      f'första primtalen är {sum}')

Exempel 3: Iteration över tecknen i en text.#

Räkna antalet vokaler i en given text:

text = '''
Kvällen gullmoln fästet kransa
älvorna på ängen dansa'''

vowels = 'aeiouyåäö'
nbr = 0
for c in text:               # For each character in the sentence
    if c.lower() in vowels:  # Check if it is in the vowel-string
        nbr += 1

print(f'Antal vokaler är {nbr}')  # Will print 16

Exempel 4: Användning av range.#

Antag att vi vill summera kvadraterna på heltalen mellan ett och tio.

sum = 0
for i in range(1, 11):
    sum += i*i
print(f'Summan är {sum}')

Uttrycket range(1,11) genererar heltalssekvensen 1, 2, 3, …, 10 dvs från och med 1 upp till men inte med 11.

Allmänt om range#

Även om det inte är tekniskt helt korrekt kan vi tänka oss att range är en funktion som genererar en lista av heltal.

Varianter

  • range(n) som ger listan [0, 1, 2, 3, … , n-1 ]

  • range(m, n) som ger listan [m, m+1, m+2, … , n-1 ]

  • range(m, n, i) som ger listan [m, m+i, m+2i, … , n-1 ]

Inkrementet i i den sista varianten kan vara negativt. Exempel:

for i in range(10, 0, -2):
    print(i, end='   ')
print('\nDone')

ger utskriften

10   8   6   4   2
Done

Övningar#

  1. Skriv satserna som skriver ut kvadraterna på de jämna talen mellan 2 och 30 med ett värde per rad.

  2. Skriv satserna som skriver ut alla tal mellan 1 och 100 som är jämnt delbara med 7.

  3. Skriv de satser som räknar hur många 6:or man får vi 100 kast med tärning.