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
0 commit comments