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