Opstap

Deze pagina bevat uitvoerbare code.

Uitwerking van Opstap. Elke opdracht staat in dezelfde volgorde als in de opgave. De codecel onder het antwoord voert het programma uit en controleert de uitvoer.

for-lussen

Een for-lus is een begrensde lus: het aantal waarden ligt vast voordat de lus begint.

Opdracht 1

De uitvoer is 0, 1, 2, 3 en 4, elk op een eigen regel.

expected = [0, 1, 2, 3, 4]
result = []
for num in range(5):
    print(num)
    result += [num]
assert result == expected
0
1
2
3
4

Opdracht 2

De uitvoer is 2, 4, 6 en 8, elk op een eigen regel.

lst = [2, 4, 6, 8]
result = []
for item in lst:
    print(item)
    result += [item]
assert result == lst
2
4
6
8

Opdracht 3

De uitvoer is 9, 7, 5, 3 en 1, elk op een eigen regel.

lst = [9, 7, 5, 3, 1]
result = []
for ix in range(len(lst)):
    print(lst[ix])
    result += [lst[ix]]
assert result == lst
9
7
5
3
1

Opdracht 4

De lus telt drie keer lst[1] op. De uitvoer is 9.

lst = [5, 3, 1]
result = 0
for ix in range(len(lst)):
    result = result + lst[1]
print(result)
assert result == 9
9

Opdracht 5

Alle even waarden worden opgeteld. De uitvoer is 20.

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
result = 0
for ix in range(len(lst)):
    if lst[ix] % 2 == 0:
        result += lst[ix]
print(result)
assert result == 20
20

Opdracht 6

De lus loopt over de vijf tekens van Hanze. De uitvoer is 5.

string = "Hanze"
result = 0
for _ in string:
    result += 1
print(result)
assert result == 5
5

Opdracht 7

De klinkers worden verzameld. De uitvoer is iieei.

string = "Dit is een string"
result = ""
for char in string:
    if char in "eauoi":
        result += char
print(result)
assert result == "iieei"
iieei

Opdracht 8

Bij elk teken na een spatie wordt dat teken toegevoegd. De uitvoer is ies.

string = "Dit is een string"
result = ""
for ix in range(len(string)):
    if string[ix - 1] == " ":
        result += string[ix]
print(result)
assert result == "ies"
ies

Opdracht 9

De lus maakt de rij van Fibonacci-achtige getallen. De uitvoer is [1, 1, 2, 3, 5, 8, 13, 21, 34, 55].

lst = []
for ix in range(10):
    if ix < 2:
        lst += [1]
    else:
        lst += [lst[ix - 1] + lst[ix - 2]]
print(lst)
assert lst == [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

Opdracht 10

De uitvoer van de lijst is [2, 6, 6.0, 8.0, 4.0]. Daarna is temp gelijk aan 2.0.

lst = []
temp = 1
for _ in range(5):
    if temp % 2 != 0:
        lst += [2 * temp]
        temp = temp + 5
    else:
        lst += [temp]
        temp = temp / 2
print(lst)
print(temp)
assert lst == [2, 6, 6.0, 8.0, 4.0]
assert temp == 2.0
[2, 6, 6.0, 8.0, 4.0]
2.0

while-lussen

Een while-lus is een onbegrensde lus: het stopmoment volgt uit de conditie en de veranderingen in de lus. Noteer dat stopmoment bij elke opdracht.

Opdracht 11

De uitvoer is 0 tot en met 4. De lus stopt wanneer num gelijk is aan 5, want dan is num < 5 onwaar.

num = 0
result = []
while num < 5:
    print(num)
    result += [num]
    num += 1
assert result == [0, 1, 2, 3, 4]
assert num == 5
0
1
2
3
4

Opdracht 12

De uitvoer is [1, 2, 3, 4, 5], daarna [2, 3, 4, 5] tot en met [5]. De lus stopt wanneer de lijst leeg is.

lst = [1, 2, 3, 4, 5]
result = []
while len(lst) > 0:
    print(lst)
    result += [lst]
    lst = lst[1:]
assert result == [[1, 2, 3, 4, 5], [2, 3, 4, 5], [3, 4, 5], [4, 5], [5]]
assert lst == []
[1, 2, 3, 4, 5]
[2, 3, 4, 5]
[3, 4, 5]
[4, 5]
[5]

Opdracht 13

De uitvoer is 1, 2, 3. De lus stopt direct door break wanneer num gelijk is aan 3.

num = 1
result = []
while num < 6:
    print(num)
    result += [num]
    if num == 3:
        break
    num += 1
assert result == [1, 2, 3]
assert num == 3
1
2
3

Opdracht 14

De uitvoer is 1, 2, 4, 5 en 6. Bij num == 3 voert continue de rest van die lusronde niet uit. De lus stopt wanneer num gelijk is aan 6 en de conditie daarna onwaar is.

num = 0
result = []
while num < 6:
    num += 1
    if num == 3:
        continue
    print(num)
    result += [num]
assert result == [1, 2, 4, 5, 6]
assert num == 6
1
2
4
5
6

Opdracht 15

De uitvoer is 24. De lus stopt wanneer number gelijk is aan 0, want dan is number > 0 onwaar.

number = 4
faculty = 1
while number > 0:
    faculty = faculty * number
    number -= 1
print(faculty)
assert faculty == 24
assert number == 0
24

Opdracht 16

De uitvoer is 1280. De lus stopt wanneer num2 gelijk is aan 0 na acht lusronden.

num1 = 5
num2 = 8
while num2 > 0:
    num1 = num1 + num1
    num2 -= 1
print(num1)
assert num1 == 1280
assert num2 == 0
1280

Opdracht 17

De uitvoer is een test. De lus stopt zodra het eerste teken van de string e is.

string = "Dit is een test"
while string[0] != "e":
    string = string[1:]
print(string)
assert string == "een test"
een test

Opdracht 18

Met de invoer 4, -1, 7, 0 is de uitvoer total = 10. De lus stopt wanneer de invoer 0 is. De controle gebruikt dezelfde waarden als invoer, zodat de cel uitvoerbaar blijft.

total = 0
inputs = [4, -1, 7, 0]
number = inputs[0]
ix = 1
while number != 0:
    total += number
    number = inputs[ix]
    ix += 1
print("total =", total)
assert total == 10
assert number == 0
total = 10

Opdracht 19

De uitvoer is 2. De lus stopt zodra lst[index] gelijk is aan 3; dat is bij index 2.

lst = [1, 2, 3, 4, 5]
index = 0
while lst[index] != 3:
    index += 1
print(index)
assert index == 2
assert lst[index] == 3
2

Opdracht 20

De uitvoer is [2, 6.0, 2.0, 6.0, 2.0, 6.0, 2.0, 6.0, 2.0, 6.0]. De lus stopt wanneer de lijst tien waarden bevat.

lst = []
temp = 1
while len(lst) < 10:
    if temp % 2 != 0:
        lst += [2 * temp]
        temp = temp + 5
    else:
        temp = temp / 2
print(lst)
assert lst == [2, 6.0, 2.0, 6.0, 2.0, 6.0, 2.0, 6.0, 2.0, 6.0]
assert len(lst) == 10
[2, 6.0, 2.0, 6.0, 2.0, 6.0, 2.0, 6.0, 2.0, 6.0]