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#
Skriv satserna som skriver ut kvadraterna på de jämna talen mellan 2 och 30 med ett värde per rad.
Skriv satserna som skriver ut alla tal mellan 1 och 100 som är jämnt delbara med 7.
Skriv de satser som räknar hur många 6:or man får vi 100 kast med tärning.