Einen StopIteration-Fehler behandeln
Die Playlist-Klasse aus der vorherigen Übung wurde so angepasst, dass sie eine Nachricht mit dem aktuell abgespielten Song ausgibt, und ist unten gezeigt. Mit diesem benutzerdefinierten Iterator übst du, eine StopIteration-Exception elegant zu behandeln. Viel Spaß!
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
Diese Übung ist Teil des Kurses
Fortgeschrittene objektorientierte Programmierung in Python
Anleitung zur Übung
- Erstelle eine
Playlistnamensclassic_rock_playlistaus den Titeln in der Listesongs; achte darauf, dassclassic_rock_playlistdie Songs mischt. - Verwende in einer
while-Schleife einentry-except-Block, um den nächsten Song inclassic_rock_playlistabzuspielen. - Erweitere die
try-except-Logik, um einenStopIteration-Fehler zu behandeln, gib eine Nachricht aus und brich die Schleife ab.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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!")
____