Aan de slagBegin gratis

Een StopIteration-fout afhandelen

De Playlist-klasse uit de vorige oefening is bijgewerkt om een bericht te printen met het huidige nummer dat wordt afgespeeld, en staat hieronder. Met deze aangepaste iterator ga je oefenen met het netjes afhandelen van een StopIteration-exceptie. Veel plezier!

class Playlist:
  def __init__(self, songs, shuffle=False):
    self.songs = songs
    self.index = 0

    if shuffle:
      random.shuffle(self.songs)

  def __iter__(self):
    return self

  def __next__(self):
    if self.index >= len(self.songs):
      raise StopIteration

    print(f"Playing {self.songs[self.index]}")
    self.index += 1

Deze oefening maakt deel uit van de cursus

Gevorderde objectgeoriënteerde programmering in Python

Bekijk cursus

Oefeninstructies

  • Maak een Playlist met de naam classic_rock_playlist op basis van de titels in de lijst songs; zorg ervoor dat classic_rock_playlist de nummers schudt.
  • Gebruik binnen een while-lus een try-except-blok om het volgende nummer in classic_rock_playlist af te spelen.
  • Werk de try-except-logica bij om een StopIteration-fout af te handelen: print een bericht en breek uit de lus.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# Create a classic rock playlist using the songs list
songs = ["Hooked on a Feeling", "Yesterday", "Mr. Blue Sky"]
____ = ____(____, ____=True)

while True:
	____:
		# Play the next song in the playlist
		next(____)
		
	# If there is a StopIteration error, print a message and
    # stop the playlist
	____ ____:
		____("Reached end of playlist!")
		____
Code bewerken en uitvoeren