Skip to content

Commit b809c7b

Browse files
authored
Add all exercises of lesson 6.
1 parent 0848094 commit b809c7b

File tree

7 files changed

+261
-0
lines changed

7 files changed

+261
-0
lines changed

Lesson-06/fa/kluizen.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
1,3199
2+
2,5520
3+
3,3551
4+
5,7827
5+
6,6717
6+
7,3525
7+
4,2741

Lesson-06/fa/pe6_fa.py

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Final Assignment: Bagagekluizen
6+
7+
Op veel stations kun je een bagagekluis huren. We willen graag dat jij de
8+
software realiseert voor deze kluis. Er zijn door de beheerders de volgende
9+
randvoorwaarden gesteld aan het systeem:
10+
11+
- Er zijn in totaal 12 kluizen
12+
- De kluis moet beveiligd zijn met een 4-cijferig wachtwoord.
13+
- Als de stroom uitvalt mag de data niet verloren gaan en daarom moet je
14+
een bestand gebruiken voor de opslag van gegevens zoals kluisnummers en
15+
wachtwoorden.
16+
17+
De gebruiker moet het onderstaande menu te zien krijgen:
18+
19+
1: Ik wil een nieuwe kluis
20+
2: Ik wil mijn kluis openen
21+
3: Ik geef mijn kluis terug
22+
4: Ik wil weten hoeveel kluizen nog vrij zijn
23+
24+
Als je kiest voor "1: Ik wil een nieuwe kluis", dan krijg de gebruiker een
25+
willekeurige code van 4 cijfers als er nog een kluis beschikbaar is. Deze code
26+
hoort bij een van de twaalf kluizen. Sla het nummer van de kluis samen met de
27+
4 cijferige code op 1 regel op in een tekstbestand en geef de code en het
28+
kluisnummer terug aan de gebruiker op het scherm.
29+
30+
Als je kiest voor "2: Ik wil mijn kluis openen", dan vraag je de gebruiker om
31+
zijn/haar code en als deze klopt dan toon je het nummer van de kluis dat
32+
daarbij hoort. Het zou leuk zijn als we de kluis ook echt konden openen, maar
33+
dat gaat lastig zonder een echte set bagagekluizen natuurlijk...
34+
35+
Als je kiest voor "3: Ik geef mijn kluis terug", dan zou je een regel uit het
36+
tekstbestand moeten halen, maar dat is ingewikkeld en daarom is deze menukeuze
37+
optioneel!
38+
39+
Als je kiest voor "4: Ik wil weten hoeveel kluizen nog vrij zijn", dan geef je
40+
als uitvoer het aantal kluizen dat nog beschikbaar is.
41+
42+
'''
43+
44+
from random import randint
45+
46+
file = open('kluizen.txt', 'a+')
47+
file.seek(0)
48+
file.close()
49+
50+
def nieuwe_kluis():
51+
file = open('kluizen.txt', 'r+')
52+
kluizen = []
53+
for kluis in file.readlines():
54+
kluizen.append(int(kluis.split(',')[0]))
55+
if(len(kluizen) < 12):
56+
for i in range(0, 12):
57+
if i + 1 not in kluizen:
58+
code = str(randint(1000, 9999))
59+
file.write(str(i + 1) + ',' + code + '\n')
60+
print('Kluisnummer {} met code {} '
61+
'is toegewezen.\n'.format(str(i + 1), code))
62+
file.seek(0)
63+
break
64+
file.close()
65+
66+
def kluis_openen():
67+
file = open('kluizen.txt', 'r')
68+
codeInput = int(input('Voer 4-cijferige code in: '))
69+
kluizen = []
70+
for kluis in file.readlines():
71+
nummer, code = kluis.split(',')
72+
kluizen.append([int(nummer), int(code.rstrip())])
73+
for kluis in kluizen:
74+
if codeInput == kluis[1]:
75+
print('Kluis met nummer {} is geopend.\n'.format(kluis[0]))
76+
return
77+
print('Foutmelding! Er bestaat geen kluis met deze code.\n')
78+
file.close()
79+
80+
def kluis_teruggeven():
81+
file = open('kluizen.txt', "r+")
82+
codeInput = int(input('Voer 4-cijferige code in: '))
83+
kluizen = []
84+
for kluis in file.readlines():
85+
nummer, code = kluis.split(',')
86+
kluizen.append([int(nummer), int(code.rstrip())])
87+
nieuweRegels = []
88+
for kluis in kluizen:
89+
if codeInput != kluis[1]:
90+
nieuweRegels.append('{},{}\n'.format(kluis[0], kluis[1]))
91+
file.seek(0)
92+
file.truncate()
93+
file.writelines(nieuweRegels)
94+
file.close()
95+
96+
def aantal_kluizen_vrij():
97+
file = open('kluizen.txt', 'r')
98+
file.seek(0)
99+
aantalVrij = 12 - len(file.readlines())
100+
print('Er zijn {} kluisjes vrij.\n'.format(aantalVrij))
101+
file.close()
102+
103+
isBezig = True
104+
105+
while(isBezig):
106+
print('1: Ik wil een nieuwe kluis\n2: Ik wil mijn kluis openen\n'
107+
'3: Ik geef mijn kluis terug\n4: Ik wil weten hoeveel kluizen nog '
108+
'vrij zijn\n5: Ik wil stoppen\n''')
109+
110+
menukeuze = int(input('Kies een menu optie: '))
111+
112+
if menukeuze == 1:
113+
nieuwe_kluis()
114+
elif menukeuze == 2:
115+
kluis_openen()
116+
elif menukeuze == 3:
117+
kluis_teruggeven()
118+
elif menukeuze == 4:
119+
aantal_kluizen_vrij()
120+
else:
121+
isBezig = False

Lesson-06/pe6_1.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Execution Control Structures (Perkovic – §5.1 t/m 5.3)
6+
7+
Practice Exercise 6.1 (decision control)
8+
Schrijf een functie seizoen(maand) die als parameter/maandnummer meekrijgt. Het
9+
functie-resultaat is het seizoen die bij die maand hoort. Nummers 3 t/m 5
10+
horen bij lente, 9 t/m 11 'herfst' etc.
11+
12+
'''
13+
14+
def seizoen(maand):
15+
if maand in (3, 4, 5):
16+
return 'lente'
17+
elif maand in (6, 7, 8):
18+
return 'zomer'
19+
elif maand in (9, 10, 11):
20+
return 'herfst'
21+
elif maand in (1, 2, 12):
22+
return 'winter'
23+
24+
print(seizoen(10))

Lesson-06/pe6_2.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Execution Control Structures (Perkovic – §5.1 t/m 5.3)
6+
7+
Practice Exercise 6.2 (lists)
8+
Schrijf een nieuw programma waarin een list met minimaal 10 strings wordt
9+
ingelezen. Het programma plaatst alle vier-letter strings uit de ingelezen
10+
list in een nieuw list en drukt deze af. Inlezen van een lijst kan met
11+
eval(input("Geef lijst met minimaal 10 string: "))
12+
13+
'''
14+
15+
lst = eval(input("Geef lijst met minimaal 10 string: "))
16+
# ['boter', 'kaas', 'bier', 'pizza', 'thee', 'drop, 'koek', 'cola', 'boterham',
17+
# 'stamppot']
18+
19+
nieuweLst = []
20+
for string in lst:
21+
if len(string) == 4:
22+
nieuweLst.append(string)
23+
24+
print(nieuweLst) # ['kaas', 'bier', 'thee', 'drop', 'koek', 'cola']

Lesson-06/pe6_3.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Execution Control Structures (Perkovic – §5.1 t/m 5.3)
6+
7+
Practice Exercise 6.3 (lists)
8+
Gegeven is variable invoer = "5-9-7-1-7-8-3-2-4-8-7-9". Schrijf een nieuw
9+
programma waarin je deze variabele splitst in een lijst van getallen en print
10+
de gesorteerde lijst. Bepaal en print na het opsplitsen de grootste waarde,
11+
kleinste waarde, aantal getallen, de som en het gemiddelde!
12+
13+
'''
14+
15+
invoer = "5-9-7-1-7-8-3-2-4-8-7-9"
16+
17+
getallen = list(map(int, invoer.split('-'))) # Zet strings gelijk om naar ints.
18+
getallen.sort()
19+
20+
grootste = max(getallen)
21+
22+
kleinste = min(getallen)
23+
24+
aantal = len(getallen)
25+
26+
som = sum(getallen)
27+
28+
gemiddelde = sum(getallen) / len(getallen)
29+
30+
print('''Gesoorteerde lijst van ints: {}
31+
Grootste getal: {} en Kleinste getal: {}
32+
Aantal getallen: {} en Som van de getallen: {}
33+
Gemiddelde: {}
34+
'''.format(getallen, grootste, kleinste, aantal, som, gemiddelde))

Lesson-06/pe6_4.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+
Execution Control Structures (Perkovic – §5.1 t/m 5.3)
6+
7+
Practice Exercise 6.4 (two-dimensional-lists)
8+
Van elke student worden 3 cijfers bijgehouden. In de lijst studentencijfers
9+
staan de gegevens van 4 studenten. Schrijf code voor twee functies die het
10+
gemiddelde cijfer voor iedere student en het gemiddelde van alle studenten
11+
berekent. De eerste functie heeft als return-waarde een één dimensionale-lijst
12+
met alle gemiddelden per student, en de tweede functie heeft als return-waarde
13+
een int-getal met het gemiddelde van alle studenten! Maak het onderstaande
14+
programma af:
15+
16+
'''
17+
18+
studentencijfers = [[95, 92, 86], [66, 75, 54], [89, 72, 100], [34, 0 ,0]]
19+
20+
def gemiddelde_per_student(studentencijfers):
21+
antw = []
22+
for cijfers in studentencijfers:
23+
antw.append(round(sum(cijfers) / len(cijfers)))
24+
return antw
25+
26+
def gemiddelde_van_alle_studenten(studentencijfers):
27+
gemiddelde_per_student = []
28+
for cijfers in studentencijfers:
29+
gemiddelde_per_student.append(round(sum(cijfers) / len(cijfers)))
30+
# Na maken van de lijst met gemiddelden per student, kun je opnieuw
31+
# hier de gemiddelden van uitrekenen.
32+
antw = round(sum(gemiddelde_per_student) / len(gemiddelde_per_student))
33+
return antw
34+
35+
print(gemiddelde_per_student(studentencijfers))
36+
print(gemiddelde_van_alle_studenten(studentencijfers))

Lesson-06/pe6_5.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Execution Control Structures (Perkovic – §5.1 t/m 5.3)
6+
7+
Practice Exercise 6.5 (nested loop)
8+
Schrijf een programma met twee for-loops in elkaar (nested) om de tafels van
9+
1 t/m 10 uit te printen.
10+
11+
'''
12+
13+
for i in range(1, 11):
14+
for j in range(1,11):
15+
print(j * i)

0 commit comments

Comments
 (0)