De 24-uursklok is een conventie die gebruikt wordt om de tijd aan te duiden, waarbij een dag loopt vanaf middernacht tot middernacht en wordt onderverdeeld in 24 uren die worden aangegeven door het aantal uren dat verstreken is sinds middernacht: van 0 tot en met 23. Dit systeem is de meest gebruikte tijdsnotatie ter wereld, en is ook de internationale standaardnotatie (ISO 86011) voor een tijdstip binnen een dag.
Een tijdstip binnen een dag wordt in de 24-uursnotatie geschreven onder de vorm uu:mm:ss (bijvoorbeeld, 01:23:45), waarbij uu (00 tot 23) het aantal volledige uren is die verstreken zijn sinds middernacht, mm (00 tot 59) het aantal volledige minuten is die verstreken zijn sinds het laatste volledige uur, en ss (00 tot 59) het aantal volledige seconden is die verstreken zijn sinds de laatste volledige minuut. Bij getallen kleiner dan 10 wordt een voorloopnul toegevoegd. In de 24-uursnotatie begint een dag om middernacht (00:00:00) en valt de laatste seconde van de dag op 23:59:59.
Definieer een klasse Klok waarmee 24-uursklokken kunnen voorgesteld worden in Python. De klasse Klok moet minstens de volgende methoden ondersteunen:
Een initialisatiemethode met drie optionele parameters: uren, minuten en seconden. Deze parameters stellen respectievelijk het aantal volledige uren $$u$$ ($$0 \leq u < 24$$) sinds mindernacht, het aantal volledige minuten $$m$$ ($$0 \leq m < 60$$) sinds het laatste volledige uur, en het aantal seconden $$s$$ ($$0 \leq s < 60$$) sinds de laatste volledige minuut voor. Alle parameters hebben standaardwaarde nul. De initiƫle tijd van de klok moet ingesteld worden op basis van de argumenten die aan de initialisatiemethode doorgegeven worden.
Een methode __repr__ die een stringvoorstelling van het object teruggeeft, die overeenkomt met de Python expressie die kan gebruikt worden om een 24-uursklok aan te maken die dezelfde tijdsinstelling heeft als de huidige klok. De string die wordt teruggegeven moet dus het formaat Klok(u, m, s) hebben, waarbij $$u$$ ($$0 \leq u < 24$$) het aantal volledige uren sinds mindernacht voorstelt, $$m$$ ($$0 \leq m < 60$$) het aantal volledige minuten sinds het laatste volledige uur voorstelt, en $$s$$ ($$0 \leq s < 60$$) het aantal volledige seconden sinds de laatste volledige minuut voorstelt.
Een methode __str__ die een stringvoorstelling van het object teruggeeft in het formaat uu:mm:ss zoals beschreven in de inleiding.
Een methode instellen die drie optionele parameters heeft: uren, minuten en seconden. Deze parameters hebben dezelfde betekenis en standaardwaarde als de overeenkomstige parameters van de initialisatiemethode. De nieuwe tijd van de klok moet ingesteld worden op basis van de argumenten die aan de methode doorgegeven worden.
Een methode vooruit die drie optionele parameters heeft: uren, minuten en seconden. De argumenten die aan deze parameters doorgegeven worden, geven respectievelijk het aantal uren, minuten en seconden aan die de klok moet vooruit gezet worden. Hierbij moet rekening gehouden worden dat na de laatste seconde van de dag (23:59:59), de klok terugspringt op 00:00:00.
>>> klok = Klok()
>>> klok
Klok(0, 0, 0)
>>> print(klok)
00:00:00
>>> klok.instellen(uren=7, minuten=5, seconden=41)
>>> klok
Klok(7, 5, 41)
>>> print(klok)
07:05:41
>>> klok.vooruit(minuten=57, seconden=39)
>>> print(klok)
08:03:20
>>> klok.vooruit(uren=20, minuten=8, seconden=48)
>>> print(klok)
04:12:08