Verkeerslichten regelen met behulp van lichtsignalen het oprijden van een gelijkvloerse kruising, de toegang tot bruggen, tunnels en spoorwegovergangen, de toegang tot parkeergarages en -terreinen, evenals de toegangsregulering bij fabrieken, bedrijven en andere afgesloten terreinen. Een verkeerslicht bevindt zich op elk ogenblik in één van drie mogelijke toestanden: groen, oranje of rood.

In de typische volgorde van kleurfasen:
Bij green licht mag het verkeer in de aangegeven richting doorrijden, als het veilig is om dat te doen en als er ruimte is aan de andere kant van het kruispunt.
Een oranje licht waarschuwt dat het verkeerslicht op het punt staat om naar rood te gaan. De acties de bestuurders bij een oranje licht moeten ondernemen verschillen: in sommige plaatsen moeten bestuurders stoppen als dit veilig kan gebeuren, terwijl op andere plaatsen bestuurders mogen oversteken als dat veilig kan gebeuren.
Een rood licht verbiedt alle doorgaand verkeer.
Definieer een klasse Verkeerslicht waarmee verkeerslichten kunnen voorgesteld worden. Elk verkeerslicht bevindt zich op elk ogenblik in één van drie mogelijke toestanden: groen, oranje of rood.
Bij het aanmaken van een nieuw verkeerslicht (Verkeerslicht) kan de begintoestand van het verkeerslicht doorgegeven worden (str; standaardwaarde: rood). De enige geldige begintoestanden zijn groen, oranje en rood (kleine letters).
Als er een verkeerslicht $$v$$ (Verkeerslicht) wordt doorgegeven aan de ingebouwde functie str, dan moet de huidige toestand (str) van verkeerslicht $$v$$ teruggegeven worden.
Als er een verkeerslicht $$v$$ (Verkeerslicht) wordt doorgegeven aan de ingebouwde functie repr, dan moet een stringvoorstelling (str) van verkeerslicht $$v$$ teruggegeven worden. Deze stringvoorstelling moet lezen als een Python expressie waarmee een nieuw verkeerslicht (Verkeerslicht) aangemaakt wordt met als begintoestand de huidige toestand van verkeerslicht $$v$$.
Op een verkeerslicht $$v$$ (Verkeerslicht) moet je een methode volgende kunnen aanroepen. Daarbij moet je geen argumenten doorgeven aan de methode en ze geeft altijd de waarde None terug, maar ze zorgt ervoor dat verkeerslicht $$v$$ naar zijn volgende toestand springt: na rood komt groen, na groen komt oranje, en na oranje komt weer rood.
>>> licht1 = Verkeerslicht()
>>> licht1
Verkeerslicht('rood')
>>> licht2 = Verkeerslicht('groen')
>>> print(licht1, licht2)
rood groen
>>> licht1.volgende()
>>> print(licht1, licht2)
groen groen
>>> licht1.volgende()
>>> licht1.volgende()
>>> licht2.volgende()
>>> print(licht1, licht2)
rood oranje