Skip to content

Commit 4c51043

Browse files
authored
Add all exercises of lesson 8.
1 parent de667ac commit 4c51043

File tree

5 files changed

+189
-0
lines changed

5 files changed

+189
-0
lines changed

Lesson-08/fa/pe8_fa.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Final Assignment: NS-kaartautomaat
6+
In deze opdracht maak je een NS-kaartautomaat. Gegeven is het treintraject
7+
Schagen - Maastricht:
8+
9+
Schagen, Heerhugowaard, Alkmaar, Castricum, Zaandam, Amsterdam Sloterdijk,
10+
Amsterdam Centraal, Amsterdam Amstel, Utrecht Centraal, 's-Hertogenbosch,
11+
Eindhoven, Weert, Roermond, Sittard, Maastricht.
12+
13+
De bedoeling is dat je 3 functies schrijft waarmee je 1) het beginstation aan
14+
een reiziger vraagt, 2) het eindstation aan een reiziger vraagt, en 3) de
15+
reisgegevens op het scherm print. Jouw functies zouden als volgt gebruikt
16+
moeten kunnen worden:
17+
18+
stations = ['Schagen', 'Heerhugowaard', ..., 'Sittard', 'Maastricht']
19+
beginstation = inlezen_beginstation(stations)
20+
eindstation = inlezen_eindstation(stations, beginstation)
21+
omroepen_reis(stations, beginstation, eindstation)
22+
23+
Een mogelijke uitvoer van deze code (als de functies zijn geschreve), staat
24+
onderaan de volgende pagina. Op de volgende pagina staat ook een stappenplan
25+
waarmee je dit programma kunt realiseren.
26+
27+
'''
28+
29+
def inlezen_beginstation(stations):
30+
while(True):
31+
station = input('Wat is je beginstation? : ')
32+
if station in stations:
33+
return station
34+
return
35+
36+
def inlezen_eindstation(stations, beginstation):
37+
while(True):
38+
station = input('Wat is je eindstation? : ')
39+
if station in stations:
40+
if(stations.index(station) > stations.index(beginstation)):
41+
return station
42+
print('Deze trein komt niet in {}'.format(station))
43+
return
44+
45+
def omroepen_reis(stations, beginstation, eindstation):
46+
beginstationIndex = stations.index(beginstation)
47+
print('\nHet beginstation {} is het {}e station in het '
48+
'traject.'.format(beginstation, beginstationIndex + 1))
49+
eindstationIndex = stations.index(eindstation)
50+
print('Het eindstation {} is het {}e station in het '
51+
'traject.'.format(eindstation, eindstationIndex + 1))
52+
verschil = abs(beginstationIndex - eindstationIndex)
53+
print('De afstand bedraagt {} station(s).'.format(verschil))
54+
prijs = verschil * 5
55+
print('De prijs van het kaartje is {} euro\n'.format(prijs))
56+
print('Jij stapt in de trein in: {}'.format(beginstation))
57+
for index, station in enumerate(stations):
58+
if index > beginstationIndex and index < eindstationIndex:
59+
print(' - {}'.format(station))
60+
print('Jij stapt uit in {}'.format(eindstation))
61+
62+
stations = ['Schagen', 'Heerhugowaard', 'Alkmaar', 'Castricum', 'Zaandam',
63+
'Amsterdam Sloterdijk', 'Amsterdam Centraal', 'Amsterdam Amstel',
64+
'Utrecht Centraal', '\'-Hertogenbosch', 'Eindhoven', 'Weert',
65+
'Roermond', 'Sittard', 'Maastricht']
66+
beginstation = inlezen_beginstation(stations)
67+
eindstation = inlezen_eindstation(stations, beginstation)
68+
omroepen_reis(stations, beginstation, eindstation)

Lesson-08/pe8_1.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Containers (Sets and Chars) (Perkovic – §6.2 t/m 6.4)
6+
7+
Practice Exercise 8.1 (sets)
8+
Hieronder staat een afbeelding van een tweetal trajecten (bruin en groen). Zet
9+
beide trajecten allebei in een set met de namen "bruin" en "groen"...
10+
11+
Print daarna eerst met een set-functie welke plaatsen in beide trajecten worden
12+
aangedaan (de overeenkomst).
13+
14+
Gebruik vervolgens opnieuw een set functie om te printen hoe het traject
15+
"bruin" verschilt van het traject "groen". Je moet dan dus op het scherm zien
16+
welke plaatsen van traject "bruin" ze niet allebei aandoen!
17+
18+
Print ook alle stations op beide trajecten uit. Print elk station maar 1!
19+
Gebruik weer een set-functie!
20+
21+
'''
22+
23+
bruin = {'Boxtel', 'Best', 'Beukenlaan', 'Eindhoven', 'Helmond \'t Hout',
24+
'Helmond', 'Helmond Brouwhuis', 'Deurne'}
25+
26+
groen = {'Boxtel', 'Best', 'Beukenlaan', 'Eindhoven', 'Geldrop', 'Heeze',
27+
'Weert'}
28+
29+
# Komen in beiden voor:
30+
print(bruin.intersection(groen)) # {'Eindhoven', 'Beukenlaan', 'Boxtel', 'Best'}
31+
32+
# Verschilt:
33+
print(bruin.difference(groen)) # {"Helmont 't Hout", 'Helmond', 'Deurne'
34+
# 'Helmond Brouwhuis'}
35+
36+
# Alle stations op beide trajecten:
37+
print(bruin | groen)

Lesson-08/pe8_2.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Containers (Sets and Chars) (Perkovic – §6.2 t/m 6.4)
6+
7+
Practice Exercise 8.2 (random)
8+
Schrijf functie monopolyworp(), die een het gooien van twee dobbelstenen voor
9+
het spel Monopoly simuleert en afdrukt. Je mag nogmaals gooien als beide stenen
10+
dezelfde waarde hebben. Zorg dat de functie die worpen ook simuleert! Na
11+
driemaal dubbel moet de speler naar de gevangenis!
12+
13+
'''
14+
from random import randint
15+
16+
def monopolyworp():
17+
aantalDezelfdeWaarden = 0
18+
i = 0
19+
while(True):
20+
i += 1
21+
rol1 = randint(1, 6)
22+
rol2 = randint(1, 6)
23+
if(rol1 == rol2):
24+
print('Dezelfde waarden gegooit op rol: {}, '
25+
'namelijk: {}, {}'.format(i, rol1, rol2))
26+
aantalDezelfdeWaarden += 1
27+
else:
28+
aantalDezelfdeWaarden = 0
29+
if(aantalDezelfdeWaarden == 3):
30+
print('Driemaal dezelfde waarden gegooit op rol: {}.'.format(i))
31+
break
32+
33+
monopolyworp()

Lesson-08/pe8_3.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Containers (Sets and Chars) (Perkovic – §6.2 t/m 6.4)
6+
7+
Practice Exercise 8.3 (ascii)
8+
Als extra beveliging wil de NS op haar E-ticket nog een unieke code afbeelden.
9+
Er is gekozen voor een hele eenvoudige beveliging: Neem de naam van de
10+
gebruiker+beginstation+eindstation, vertaal elk karakter naar ASCII en maak
11+
die waarde 3 groter. De "a" wordt dus een "b", de "b" wordt een "e", etc.
12+
De "A" wordt een "D", de "W" wordt een "Z", etc. En de spatie "" wordt een "#".
13+
14+
Zorg ervoor dat je code maakt die deze uitvoer maakt op basis van de invoer van
15+
de gebruiker. Schrijf een functie def code(invoerstring): die ieder teken van
16+
invoerstring omzet naar zijn rangordenummer met bibliotheekfunctie ord, en -
17+
na er 3 bij te hebben opgeteled - die int-waarde weer terug vertaalt naar het
18+
bijbehorende ASCII-teken met bibliotheekfunctie chr().
19+
20+
Voorbeeld: code("RutteAlkmaarDen Helder") levert op UxwwhDonpdduGhq#Khoghu
21+
22+
'''
23+
24+
def code(invoerstring):
25+
asciiCode = ''
26+
for karakter in invoerstring:
27+
asciiCode += chr(ord(karakter) + 3)
28+
return asciiCode
29+
30+
gebruiker = input('Gebruikersnaam: ')
31+
32+
beginstation = input('Bij welk station begint de reis: ')
33+
34+
eindstation = input('Bij welk station eindigt de reis: ')
35+
36+
asciiCode = code(gebruiker+beginstation+eindstation)
37+
print(asciiCode) # "RutteAlkmaarDen Helder" = UxwwhDonpdduGhq#Khoghu

Lesson-08/pe8_4TODO.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Containers (Sets and Chars) (Perkovic – §6.2 t/m 6.4)
6+
7+
De volgende tabel toont verschillende Python container-types in de eerste
8+
kolom, en eigenschappen die deze types wel of niet hebben in de volgende
9+
kolommen. Maak deze tabel af door in alle cellen JA in te vullen als dat
10+
datatype die eigenschap heeft, of NEE als dat niet zo is. Zoek het antwoord
11+
in het boek of schrijf zelf een programma om te controleren of je antwoord
12+
klopt.
13+
14+
'''

0 commit comments

Comments
 (0)