Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit c9fc2ff

Browse files
authored
Add all exercises of lesson 4.
1 parent 7806d36 commit c9fc2ff

File tree

7 files changed

+315
-0
lines changed

7 files changed

+315
-0
lines changed

‎Lesson-04/fa/pe4_fa.py

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Final Assignment: NS-functies
6+
7+
De NS heeft standaardtarieven voor treinreizen, maar onder sommige omstandig-
8+
heden krijger reizigers korting. Bijvoorbeeld omdat ze in een bepaalde
9+
leeftijdscategorie vallen. In deze opdracht maak je twee functies:
10+
standaardtarief(..) en ritprijs(..). De eerste functie bepaalt het standaard-
11+
bedrag voor een bepaalde rit. De tweede functie maakt hier gebruik van, maar
12+
bepaalt zelf ook nog welke kortingen van toepassing zijn en levert als
13+
return-waarde de definitieve prijs.
14+
15+
'''
16+
17+
'''
18+
Deel 1
19+
20+
Schrijf functie standaardprijs(afstandKM). Iedere treinrit kost 80 cent per
21+
kilometer, maar als de rit langer is dan 50 kilometer betaal je een vast bedrag
22+
van 15,ドル- plus 60 cent per kilometer. Ga bij invoer van negatieve afstanden
23+
uit van een afstand van 0 kilometer (prijs is dan dus 0 Euro).
24+
25+
'''
26+
27+
def standaardPrijs(afstandKM):
28+
if afstandKM > 0:
29+
if afstandKM <= 50:
30+
return 0.80 * afstandKM
31+
else:
32+
return 15 + 0.60 * afstandKM
33+
return 0.0
34+
35+
'''
36+
Deel 2
37+
Schrijf nu ook de functie ritprijs(leeftijd, weekendrit, afstandKM). De
38+
parameter weekendrit is een boolean die aangeeft of de rit in het weekend
39+
plaats zal hebben (True) of niet (False). Het eerste wat de functie
40+
ritprijs moet doen, is het aanroepen van de functie standaardprijs, waarbij
41+
de afstand in kilometers doorgegeven moet worden, om de standaardprijs voor
42+
de rit op te vragen. Aan de hand van de return-waarde kan de ritprijs worden
43+
berekend. De regels zijn als volgt:
44+
45+
Op werkdagen reizen kinderen (onder 12 jaar) en ouderen (65 en ouder) met
46+
30% korting. In het weekend reist deze groep met 35% korting. De overige
47+
leeftijdsgroepen reizen betalen de gewone prijs, behalve in het weekend, dan
48+
reist deze leeftijdsgroep met 40% korting.
49+
'''
50+
51+
def ritprijs(leeftijd, weekendrit, afstandKM):
52+
prijs = standaardPrijs(afstandKM)
53+
if weekendrit:
54+
if leeftijd < 12 or leeftijd >= 65:
55+
return prijs - prijs * 0.3
56+
else:
57+
return prijs - prijs * 0.4
58+
else:
59+
if leeftijd < 12 or leeftijd >= 65:
60+
return prijs - prijs * 0.35
61+
else:
62+
return prijs
63+
64+
'''
65+
Deel 3
66+
67+
De diverse parameters kunnen voor heel veel verschillende executie-paden
68+
zorgen. Dat wil zeggen dat de code op heel veel verschillende manieren door-
69+
lopen kan worden. Verstandig is om je programma in ieder geval op grens-
70+
waarden te testen. Voor leeftijd test je dan 11, 12, 64 en 65, maar voor
71+
al die leeftijden ook weer of het een weekendrit is of niet (4x2 = 8
72+
combinaties). Voor elk van die 8 combinaties kan er ook weer een korte of lange
73+
treinrit (of een negatieve afstand) ingevoerd worden, wat 8x3 = 24 testpaden
74+
oplevert. Test jouw methode ritprijs zo goed mogelijk!
75+
'''
76+
77+
# 1. 11 jaar oud, geen weekendrit, 0 km.
78+
print(ritprijs(11, False, 0)) # 0.0
79+
80+
# 2. 12 jaar oud, geen weekendrit, 0 km.
81+
print(ritprijs(12, False, 0)) # 0.0
82+
83+
# 3. 64 jaar oud, geen weekendrit, 0 km.
84+
print(ritprijs(64, False, 0)) # 0.0
85+
86+
# 4. 65 jaar oud, geen weekendrit, 0 km.
87+
print(ritprijs(65, False, 0)) # 0.0
88+
89+
# 5. 11 jaar oud, weekendrit, 0 km.
90+
print(ritprijs(11, True, 0)) # 0.0
91+
92+
# 6. 12 jaar oud, weekendrit, 0 km.
93+
print(ritprijs(12, True, 0)) # 0.0
94+
95+
# 7. 64 jaar oud, weekendrit, 0 km.
96+
print(ritprijs(64, True, 0)) # 0.0
97+
98+
# 8. 65 jaar oud, weekendrit, 0 km.
99+
print(ritprijs(65, True, 0)) # 0.0
100+
101+
# 9. 11 jaar oud, geen weekendrit, 30 km.
102+
print(ritprijs(11, False, 30)) # 15.6000...1
103+
104+
# 10. 12 jaar oud, geen weekendrit, 30 km.
105+
print(ritprijs(12, False, 30)) # 24.0
106+
107+
# 11. 64 jaar oud, geen weekendrit, 30 km.
108+
print(ritprijs(64, False, 30)) # 24.0
109+
110+
# 12. 65 jaar oud, geen weekendrit, 30 km.
111+
print(ritprijs(65, False, 30)) # 15.6000...1
112+
113+
# 13. 11 jaar oud, weekendrit, 30 km.
114+
print(ritprijs(11, True, 30)) # 16.8
115+
116+
# 14. 12 jaar oud, weekendrit, 30 km.
117+
print(ritprijs(12, True, 30)) # 14.3999...
118+
119+
# 15. 64 jaar oud, weekendrit, 30 km.
120+
print(ritprijs(64, True, 30)) # 14.3999...
121+
122+
# 16. 65 jaar oud, weekendrit, 30 km.
123+
print(ritprijs(65, True, 30)) # 16.8
124+
125+
# 17. 11 jaar oud, geen weekendrit, 50 km.
126+
print(ritprijs(11, False, 50)) # 26.0
127+
128+
# 18. 12 jaar oud, geen weekendrit, 50 km.
129+
print(ritprijs(12, False, 50)) # 40.0
130+
131+
# 19. 64 jaar oud, geen weekendrit, 50 km.
132+
print(ritprijs(64, False, 50)) # 40.0
133+
134+
# 20. 65 jaar oud, geen weekendrit, 50 km.
135+
print(ritprijs(65, False, 50 )) # 26.0
136+
137+
# 21. 11 jaar oud, weekendrit, 50 km.
138+
print(ritprijs(11, True, 50)) # 28.0
139+
140+
# 22. 12 jaar oud, weekendrit, 50 km.
141+
print(ritprijs(12, True, 50)) # 24.0
142+
143+
# 23. 64 jaar oud, weekendrit, 50 km.
144+
print(ritprijs(64, True, 50)) # 24.0
145+
146+
# 24. 65 jaar oud, weekendrit, 50 km.
147+
print(ritprijs(65, True, 50)) # 28.0

‎Lesson-04/pe4_1.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Functions (Perkovic - §3.3 t/m §3.5)
6+
7+
Practice Exercise 4.1 (functie met 3 parameters)
8+
Maak een nieuwe Python file aan voor deze opdracht (vanaf nu is dat standaard
9+
en zal dat niet steeds meer bij de opdracht staan). Schrijf (en test) de
10+
functie som() die 3 parameters heeft: getal1, getal2 en getal3. De return-
11+
waarde van de functie moet de som (optelling) van deze parameters zijn!
12+
13+
'''
14+
15+
16+
def som(getal1, getal2, getal3):
17+
''' Return the sum of 3 given integer parameters '''
18+
return getal1 + getal2 + getal3
19+
20+
antwoord = som(1, 2, 3)
21+
print(antwoord) # 6

‎Lesson-04/pe4_2.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Functions (Perkovic - §3.3 t/m §3.5)
6+
7+
Practice Exercise 4.2 (functie met list-parameter)
8+
Schrijf (en test) de functie som() die 1 parameter heeft: getallenLijst. Ga
9+
ervan uit dat dit een list is met integers. De return-waarde van de functie
10+
moet de som (optelling) van de getallen in de lijst zijn! Tip: bekijk nog eens
11+
de list-functies (Perkovic, blz. 28).
12+
13+
'''
14+
15+
16+
def som(getallenLijst):
17+
''' Return the sum of given list parameter '''
18+
return sum(getallenLijst)
19+
20+
antwoord = som([1, 2, 3])
21+
print(antwoord) # 6

‎Lesson-04/pe4_3.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+
Functions (Perkovic - §3.3 t/m §3.5)
6+
7+
Practice Exercise 4.3 (functie met if)
8+
Schrijf (en test) de functie lang_genoeg() die voor Efteling-attracties
9+
bepaalt of een gebruiker in een attractie mag. De functie heeft één parameter,
10+
namelijk de lengte van de gebruiker in centimers. Als de gebruiker 120
11+
centimeter of langer is de return-waarde van de functie "Je bent lang genoeg
12+
voor de attractie!", anders is de melding "Sorry, je bent te klein!".
13+
14+
'''
15+
16+
def lang_genoeg(lengte):
17+
'''Returns message based on given height in centimeters.'''
18+
if(lengte >= 120):
19+
return 'Je bent lang genoeg voor de attractie!'
20+
else:
21+
return 'Sorry, je bent te klein!'
22+
23+
reactie = lang_genoeg(180)
24+
print(reactie) # 'Je bent lang genoeg voor de attractie!'

‎Lesson-04/pe4_4.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+
Functions (Perkovic - §3.3 t/m §3.5)
6+
7+
Practice Exercise 4.4 (functie met if)
8+
Schrijf (en test) een functie new_password() die 2 parameters heeft:
9+
oldpassword en newpassword. De return-waarde is True als het nieuwe password
10+
voldoet aan de eisen. Het nieuwe password wordt alleen geaccepteerd als het
11+
verschilt van het oude password èn als het minimaal 6 tekens lang is. Als dat
12+
niet zo is, is de return waarde False.
13+
14+
Optioneel: zorg dat het nieuwe password minstens 1 cijfer moet bevatten!
15+
16+
'''
17+
18+
def new_password(oldpassword, newpassword):
19+
'''Checks if new password meets set requirements. '''
20+
if oldpassword != newpassword and len(newpassword) >= 6:
21+
return any(char.isdigit() for char in newpassword)
22+
23+
a = new_password('password123', 'password123')
24+
print(a) # False
25+
26+
b = new_password('password123', 'passw')
27+
print(b) # False
28+
29+
c = new_password('password', 'password')
30+
print(c) # False
31+
32+
d = new_password('password123', 'password1')
33+
print(d) # True

‎Lesson-04/pe4_5.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+
Functions (Perkovic - §3.3 t/m §3.5)
6+
7+
Practice Exercise 4.5 (functie met list-parameter en for-loop)
8+
Schrijf (en test) de functie kwadraten_som() die 1 parameter heeft:
9+
grondgetallen. Dit is een list met integers. De return-waarde van de functie
10+
is de som van de kwadraten van alle positieve getallen in de lijst! Een lijst
11+
van [4, 5, 3, -81] heeft als return waarde dus 50 (16 + 9 + 25)
12+
13+
'''
14+
15+
def kwadraten_som(grondgetallen):
16+
''' Returns sum of squared positive numbers in given parameter. '''
17+
positief = []
18+
for getal in grondgetallen:
19+
if getal > 0:
20+
positief.append(getal ** 2)
21+
return sum(positief)
22+
23+
antwoord = kwadraten_som([4, 5, 3, -81])
24+
print(antwoord)

‎Lesson-04/pe4_6.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
'''
2+
3+
Introduction To Computing Using Python (Werkboek)
4+
5+
Functions (Perkovic - §3.3 t/m §3.5)
6+
7+
Practice Exercise 4.6 (functie met (im)mutable parameter)
8+
Schrijf (en test) functie wijzig() met één parameter: letterlijst. Zorg dat de
9+
functie de lijst leegt en de letters ['d', 'e', 'f'] toevoegt. Er is geen
10+
return-waarde! Test je programma als volgt:
11+
12+
lijst = ['a', 'b', 'c']
13+
print(lijst)
14+
wijzig(lijst)
15+
print(lijst)
16+
17+
'''
18+
19+
lijst = ['a', 'b', 'c']
20+
letterlijst = 'f'
21+
22+
def wijzig(letterlijst):
23+
lijst.clear()
24+
lijst.append(letterlijst)
25+
26+
print(lijst)
27+
wijzig(letterlijst)
28+
print(lijst)
29+
30+
# Q: Waarom kun je in de functie niet de opdracht lijst = ['d', 'e', 'f'] geven?
31+
# A: Dit zou een nieuwe variabele lijst aanmaken in de scope van de functie,
32+
# hierdoor kun je niet meer bij de originele variabele die je moet muteren.
33+
34+
# Q: Werkt jouw functie ook met string-parameter? Probeer dit! Waarom werkt het
35+
# wel/niet?
36+
# A: Dit werkt wel, omdat de list.append() methode zowel een list als een
37+
# een string accepteert. Deze plaatst hij dan achter de originele lijst.
38+
39+
# Q: Welke rol speelt (im)mutabiliteit in deze vraag?
40+
# A: In het kader van de eerste vraag, zou variabele lijst, op het moment dat je
41+
# een nieuwe variabele genaamd 'lijst' in de functie aanmaakt, immutabel
42+
# worden, omdat de referentie binnen de scope van de functie verloren gaat.
43+
#
44+
# Je past in dit voorbeeld voor het eerst een variabele aan buiten de scope
45+
# waar we de vorige lessen mee hebben gewerkt.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /