Lussen#
Looping for
a while
for
lussen#
for i in [0, 1, 2]:
print("i is", i)
i is 0
i is 1
i is 2
for i in range(0, 3):
print("i is", i)
i is 0
i is 1
i is 2
for x in [10, 15, 2020]:
print("x is", x)
x is 10
x is 15
x is 2020
for i in ...:
print("Gefeliciteerd")
Hoe kan dit 10 keer worden uitgevoerd? Hier is een reeks aan oplossingen mogelijk…
for i in range(10):
print("Gefeliciteerd!")
Gefeliciteerd!
Gefeliciteerd!
Gefeliciteerd!
Gefeliciteerd!
Gefeliciteerd!
Gefeliciteerd!
Gefeliciteerd!
Gefeliciteerd!
Gefeliciteerd!
Gefeliciteerd!
Iteratief ontwerp#
Lussen! Variabelen!
for
for x in [40, 41, 42]:
print(x)
while
x = 42
while x > 0:
print(x)
x -= 1
Variabelen
x = 41
x += 1
Variabelen#
Variëren!
age = 41
age = age + 1
Wat hetzelfde is als …
age += 1
In het kort#
hwToGo = 7
hwToGo = hwToGo - 1
hwToGo -= 1
total = 21000000
total = total * 2
total *= 2
u235 = 84000000000000000;
u235 = u235 / 2
u235 /= 2
for
!#
for x in [2, 4, 6, 8]:
print("x is", x)
print("Done!")
Stap voor stap#
ken elk element toe aan
x
for x in [2, 4, 6, 8]:
de BODY of BLOCK gebruikt de waarde van
x
en vervolg de lus met de het volgende element
print("x is", x)
code na de lus wordt wordt pas uitgevoerd als de lus klaar is!
print("Done!")
Faculteit met for
#
def fac(n):
result = 1 # not the result yet!
for i in range(1, n + 1): # range start at 0, add one!
result *= i # result = result * i
return result # return the result
fac(5)
120
Quiz#
x = 0
for i in range(4):
x += 10
print(x)
Wat wordt geprint voor x
?
Oplossing
40S = "time to think this over! "
result = ""
for i in range(len(S)):
if S[i - 1] == " ":
result += S[i]
print(result)
Wat wordt geprint voor result
?
Oplossing
'tttto'
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Twee typen for
#
Elementen versus index
Op basis van element#
L = [3, 15, 17, 7]
for x in L:
print(x)
S = "een fijne lus"
for c in S:
print(c)
Op basis van index#
L = [3, 15, 17, 7]
for i in range(len(L)):
print(L[i])
S = "een fijne lus"
for i in range(len(S)):
print(S[i])
Let op, het is niet heel gewoon om in lussen te printen, maar is wel heel nuttig voor debuggen!
Welke van de twee?#
Elementen: eenvoudiger
Indices: flexibeler
Denk aan het “time to think this over! “ voorbeeld, in de lus kon op basis van de index steeds “terug” worden gekeken in de string met S[i - 1]
!
Extreme lussen#
guess = 42
print("It keeps on")
while guess == 42:
print("going and")
print("Phew! I'm done!")
Wat doet deze lus?
while
lussen#
Een lus tot een bepaalde conditie is bereikt.
Tests?
42 == 42
guess > 42
…
Ontsnappen#
import random
guess = 0 # starting value, not the final or desired value!
while guess != 42: # test to see if we keep looping
print('Help! Let me out!')
guess = random.choice([41, 42, 43]) # watch out for infinite loops!
print('At last!') # after the loop ends
Help! Let me out!
At last!
Denken in lussen#
for
for x in range(42):
print(x)
while
x = 1
while x < 42:
print(x)
x *= 2
Verschillen#
Wat zijn de verschillen in ontwerp tussen deze twee Python lussen?
for
— eindige herhaling
Voor een bestaande list of bekend aantal herhalingen
while
— oneindige herhaling
Voor een onbekend aantal herhalingen
continue
en break
#
De instructie break
zal een lus meteen laten stoppen en het programma gaat verder onder de lus.
De instructie continue
gaat naar het einde van de lus en indien nodig wordt de lus herhaald.
Opdracht 1#
a. Wat is de output?
def fun1B():
for i in range(1, 6):
if i % 2 == 0:
print("i is", i)
return
fun1B()
# controleer jouw antwoord
b. Wat is de output?
def fun2B():
for i in range(1, 6):
if i % 2 == 0:
print("i is", i)
return
fun2B()
# controleer jouw antwoord
c. Wat is de output?
def fun3B():
for i in range(1,6):
if i % 2 == 0:
print("i is", i)
return
fun3B()
# controleer jouw antwoord
d. Wat is de output?
def fun4B():
for i in range(1,6):
if i % 2 == 0:
print("i is", i)
return
fun4B()
# controleer jouw antwoord
Opdracht 2#
Wat is de output van het volgende programma?
def function(L):
result = []
for e in L:
if e < 5:
result += [e]
return result
print(function([1, 2, 3, 4, 5, 6]))
# controleer jouw antwoord
Opdracht 3#
Schrijf een functie factors(n)
die:
Een integer ‘n’ accepteert
Een lijst teruggeeft met alle factoren van ‘n’
Gebruik hiervoor een lus
Let goed op hoe in de vorige opgave
result
werd gebruikt, dit idee kan je ook hier gebruiken.
Tip
De modulo-operator (%
) kan hier heel handig zijn!
Vergeet niet de functie voldoende te testen, bijvoorbeeld:
assert factors(12) == [1, 2, 3, 4, 6, 12]
assert factors(15) == [1, 3, 5, 15]
# jouw oplossing
Opdracht 4#
Wat is de output van het volgende programma?
def function(s):
result = ''
for c in s:
result = c + result
return result
print(function("Hanze"))
# controleer jouw antwoord
Opdracht 5#
Schrijf een functie count_vowels(s)
die:
Een string ‘s’ accepteert
De functie telt alle klinkers in de string en geeft het resultaat terug als integer.
Gebruik een lus voor het tellen van de klinkers
Let goed op hoe in de vorige opgave
result
werd gebruikt, dit idee kan je ook hier gebruiken.
Maak zelf een aantal assertions om je functie te testen.
# jouw oplossing