Hantera ett StopIteration-fel
Klassen Playlist från föregående övning har uppdaterats för att skriva ut ett meddelande med den låt som spelas för tillfället, och visas nedan. Med den här egna iteratorn får du öva på att hantera ett StopIteration-undantag på ett kontrollerat sätt. Kör igång!
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
Den här övningen är en del av kursen
Objektorienterad programmering i Python – fortsättningskurs
Övningsinstruktioner
- Skapa en
Playlistmed namnetclassic_rock_playlistbestående av titlarna i listansongs. Se till attclassic_rock_playlistblandar låtarna. - Använd ett
try-except-block inuti enwhile-loop för att spela nästa låt iclassic_rock_playlist. - Uppdatera
try-except-logiken så att den hanterar ettStopIteration-fel – skriv ut ett meddelande och avsluta loopen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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!")
____