Skip to content

Commit 9fa5aa3

Browse files
authored
Add all exercises of lesson 9.
1 parent 4c51043 commit 9fa5aa3

File tree

7 files changed

+190
-0
lines changed

7 files changed

+190
-0
lines changed

Lesson-09/artikelen.csv

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Artikelnummer;Artikelcode;Naam;Voorraad;Prijs
2+
271;TRS665;Ipad hoes;155;19.0
3+
128;ZYX163;Bureaulamp;34;19.95
4+
137;MLK709;Monitorstandaard;66;32.50
5+
123;PQR678;Nietmachine;587;9.99
6+
121;ABC123;Highlight pen;231;0.56

Lesson-09/gamers.csv

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Anton;12-05-2016;29
2+
Douwe Bob;13-05-2016;44
3+
Anton;11-05-2016;39
4+
Douwe Bob;12-05-2016;55
5+
Anton;10-05-2016;29
6+
Douwe Bob;11-05-2016;69

Lesson-09/inloggers.csv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Thu 07 Sep 2017 at 21:55;W.A.;van Oranje;27-04-1967;willem@nederland.nl
2+
Thu 07 Sep 2017 at 21:56;M.;Rutte;12-12-1971;MarkRutte@torentje.me

Lesson-09/pe9_1.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Catching Exceptions, CSV-files (Perkovic – §4.4 & §7.3)
6+
7+
Practice Exercise 9.1 (catching exceptions)
8+
Je reist met een grote groep en hebt een hotel afgehuurd. Dat kost €4356,-.
9+
Dit is kostbaar, daarom wil je weten hoeveel dit per persoon kost. Schrijf een
10+
programma dat de gebruiker vraagt om het aantal personen dat mee op reis gaat.
11+
Deel het bedrag door het aantal reizigers en print dat uit! Gebruik een try-
12+
except; zorg dat bij foute invoer deze verschillende foutmeldingen geprint
13+
worden:
14+
15+
Aantal = 0 - Delen door nul kan niet!
16+
Aantal = -20 - Negatieve getallen zijn niet toegestaan!
17+
Aantal = 'twintig' - Gebruik cijfers voor het invoeren van het aantal!
18+
Alle andere fouten: - Onjuiste invoer!
19+
20+
'''
21+
22+
try:
23+
aantalReizigers = int(input('Hoeveel personen gaan er mee op reis? : '))
24+
if aantalReizigers == 0:
25+
raise Exception('Delen door nul kan niet!')
26+
elif aantalReizigers < 0:
27+
raise Exception('Negatieve getallen zijn niet toegestaan!')
28+
elif isinstance(aantalReizigers, str):
29+
raise Exception('Gebruik cijfers voor het invoeren van het aantal!')
30+
except Exception:
31+
print()
32+
except ValueError:
33+
print('Onjuiste invoer!')
34+
35+
print('De kosten voor 1 persoon '
36+
'bedraagt: {0:.2f}'.format(4356 / aantalReizigers))

Lesson-09/pe9_2.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Catching Exceptions, CSV-files (Perkovic – §4.4 & §7.3)
6+
7+
Practice Exercise 9.2 (CSV-files schrijven)
8+
Met onderstaande code worden de gegevens van iedereen vastgelegd die wil
9+
inloggen in een overheidssysteem. Voorletters, achternaam, geboortedatum en
10+
e-mailadres worden ingelezen via de console en weggeschreven naar een CSV-
11+
bestand, voorafgegaan door de huidige datum en tijd. Van meerdere personen
12+
moeten deze gegevens ingelezen kunnen worden en weggeschreven naar het CSV-
13+
bestand. Het programma stop na intikken van de naam 'einde'. Maak het
14+
programma af:
15+
16+
Een mogelijke uitvoer zou dan worden:
17+
Wat is je achternaam: van Oranje
18+
Wat zijn je voorletters: W.A.
19+
Wat is je geboortedatum: 27-04-1967
20+
Wat is je e-mail adres: willem@nederland.nl
21+
22+
Het CSV-bestand ziet er hierna zo uit:
23+
Tue 03 May 2016 at 12:06;W.A.;van Oranje;27-04-1967;willem@nederland.nl
24+
25+
'''
26+
from datetime import datetime
27+
import csv
28+
29+
bestand = 'inloggers.csv'
30+
31+
with open('inloggers.csv', 'w') as file:
32+
while(True):
33+
naam = input("Wat is je achternaam? ")
34+
if(naam == 'einde'):
35+
break
36+
voorl = input("Wat zijn je voorletters? ")
37+
gbdatum = input("Wat is je geboortedatum? ")
38+
email = input("Wat is je e-mail adres? ")
39+
tijdstip = datetime.strftime(datetime.now(), '%a %d %b %G at %H:%M')
40+
text = [tijdstip, voorl, naam, gbdatum, email]
41+
file.write(';'.join(text))
42+
file.write('\n')
43+

Lesson-09/pe9_3.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+
Catching Exceptions, CSV-files (Perkovic – §4.4 & §7.3)
6+
7+
Practice Exercise 9.3 (CSV-files lezen)
8+
In deze opdracht krijg je een CSV-bestand met informatie van een aantal gamers.
9+
Per regel staan er drie gegevens van een gamer: de naam, de speeldatum en de
10+
behaalde score. Het programma leest alle regels in en bepaalt welke gamer de
11+
hoogste score heeft behaald en op welke datum dat was.
12+
13+
Uitvoer:
14+
De hoogste score is 69 op 11-05-2016 behaald door Douwe Bob
15+
16+
Deze informatie komt uit het volgende CSV-bestand, neem deze over:
17+
Anton;12-05-2016;29
18+
Douwe Bob;13-05-2016;44
19+
Anton;11-05-2016;39
20+
Douwe Bob;12-05-2016;55
21+
Anton;10-05-2016;29
22+
Douwe Bob;11-05-2016;69
23+
24+
'''
25+
26+
with open('gamers.csv', 'r') as file:
27+
scores = []
28+
for line in file.readlines():
29+
naam, datum, score = line.rstrip().split(';')
30+
scores.append([score, [datum, naam]])
31+
hoogsteScore = max(scores)
32+
print('De hoogste score is: {} op {} behaald door '
33+
'{}'.format(hoogsteScore[0], hoogsteScore[1][0], hoogsteScore[1][1]))

Lesson-09/pe9_4.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Catching Exceptions, CSV-files (Perkovic – §4.4 & §7.3)
6+
7+
Practice Exercise 9.4 (CSV-files met headers)
8+
De onderstaande tabel bevat de gegevens van een aantal producten.
9+
10+
Stap 1: Maak (met Python) een CSV-bestand met bovenstaande gegevens
11+
(inclusief headers).
12+
Stap 2: Lees vervolgens het bestand met een Python programma weer in en print
13+
1.) de naam en prijs van het duurste product.
14+
2.) het artikelnummer en de voorraad van het artikel met de kleinste
15+
voorraad en
16+
3.) het totaalaantal producten in voorraad!
17+
18+
Uitvoer:
19+
Het duurste artikel is Monitorstandaard en die kost 32.50 Euro
20+
Er zijn slechts 34 exemplaren in voorraad van het product met nummer 128
21+
In totaal hebben wij 1073 producten in ons magazijn liggen
22+
23+
'''
24+
25+
headers = ['Artikelnummer', 'Artikelcode', 'Naam', 'Voorraad', 'Prijs']
26+
artikelen = {
27+
('121', 'ABC123', 'Highlight pen', '231', '0.56'),
28+
('123','PQR678', 'Nietmachine', '587', '9.99'),
29+
('128','ZYX163', 'Bureaulamp', '34', '19.95'),
30+
('137','MLK709', 'Monitorstandaard', '66', '32.50'),
31+
('271','TRS665', 'Ipad hoes', '155', '19.00')
32+
}
33+
34+
with open('artikelen.csv', 'w') as file:
35+
file.truncate()
36+
file.write(';'.join(headers))
37+
file.write('\n')
38+
for artikel in artikelen:
39+
file.write(';'.join(artikel))
40+
file.write('\n')
41+
file.close()
42+
43+
with open('artikelen.csv', 'r') as file:
44+
file.readline() # Skip headers
45+
content = file.readlines()
46+
artikelen = []
47+
voorraden = []
48+
for line in content:
49+
nummer, code, naam, voorraad, prijs = line.rstrip().split(';')
50+
artikelen.append((int(nummer), code, naam, int(voorraad), float(prijs)))
51+
voorraden.append(int(voorraad))
52+
# Duurste.
53+
duursteArtikel = sorted(artikelen, key=lambda x: x[4])[-1]
54+
print('Het duurste artikel is {} en die kost '
55+
'{} Euro'.format(duursteArtikel[2], duursteArtikel[4]))
56+
# Kleinste voorraad.
57+
kleinsteVoorraad = sorted(artikelen, key=lambda x: x[3])[0]
58+
print('Er zijn slechts {} exemplaren in voorraad van het product '
59+
'met nummer {}'.format(kleinsteVoorraad[3], kleinsteVoorraad[0]))
60+
# Totaal aantal producten.
61+
aantal = sum(voorraden)
62+
print('In totaal hebben wij {} producten in ons magazijn '
63+
'liggen'.format(aantal))
64+
file.close()

0 commit comments

Comments
 (0)