Gude, ich hab zwar gar keine Ahnung von Python, aber hier mal die Antwort von ChatGPT:
Um den Code zu korrigieren und das gewünschte Verhalten zu erreichen, solltest du den Datentyp jedes Elements in der Schleife überprüfen. Hier ist eine überarbeitete Version des Codes:
bookshelf = ["Harry Potter 1", "Harry Potter 2", "Harry Potter 3", "Harry Potter 4",
"Harry Potter 5", "Harry Potter 6", "Harry Potter 7"]
bookshelf2 = bookshelf.copy()
bookshelf2.append(14.23)
for i in bookshelf2:
if type(i) == str:
continue
else:
popped_value = bookshelf2.pop()
print(popped_value)
Jetzt wird der Datentyp jedes Elements überprüft, und nur wenn es sich um einen String handelt, wird die Schleife fortgesetzt. Dadurch wird "Harry Potter 7" nicht aus der Liste entfernt, und du erhältst den gewünschten Ausgang.
Warum dein Programm Harry Potter 5 ausgibt anstatt Harry Potter 7 wies hier steht, weiß ich auch net. Kannst ja selbst nochmal nachschauen.