Opstap¶
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]