for-satsen
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 in vowels.lower(): # 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.
-
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 ]
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.