I get an IndexError in my code, despite self.count not becoming larger the length of the list:
student_roster = [
{
"name": "Karina M",
"age": 8,
"height": 48,
"favorite_subject": "Math",
"favorite_animal": "Dog"
},
{
"name": "Yori K",
"age": 7,
"height": 50,
"favorite_subject": "Art",
"favorite_animal": "Cat"
},
{
"name": "Alex C",
"age": 7,
"height": 47,
"favorite_subject": "Science",
"favorite_animal": "Cow"
},
{
"name": "Esmeralda R",
"age": 8,
"height": 52,
"favorite_subject": "History",
"favorite_animal": "Rabbit"
},
{
"name": "Sandy P",
"age": 7,
"height": 49,
"favorite_subject": "Recess",
"favorite_animal": "Guinea Pig"
},
{
"name": "Matthew Q",
"age": 7,
"height": 46,
"favorite_subject": "Music",
"favorite_animal": "Walrus"
},
{
"name": "Trudy B",
"age": 8,
"height": 45,
"favorite_subject": "Science",
"favorite_animal": "Ladybug"
},
{
"name": "Benny D",
"age": 7,
"height": 51,
"favorite_subject": "Math",
"favorite_animal": "Ant"
},
{
"name": "Helena L",
"age": 7,
"height": 53,
"favorite_subject": "Art",
"favorite_animal": "Butterfly"
},
{
"name": "Marisol R",
"age": 8,
"height": 50,
"favorite_subject": "Math",
"favorite_animal": "Lion"
}
]
import itertools
# Import modules above this line
class ClassroomOrganizer:
def __init__(self):
self.sorted_names = self._sort_alphabetically(student_roster)
def _sort_alphabetically(self,students):
names = []
for student_info in students:
name = student_info['name']
names.append(name)
return sorted(names)
def get_students_with_subject(self, subject):
selected_students = []
for student in student_roster:
if student['favorite_subject'] == subject:
selected_students.append((student['name'], subject))
return selected_students
#MY QUESTION COVERS THE CODE BELOW
def __iter__(self):
self.count = 0
return self
def __next__(self):
if self.count < len(self.sorted_names):
self.count += 1
return self.sorted_names[self.count]
else:
raise StopIteration
#def seating_plan(self):
register = ClassroomOrganizer()
register_iterable = iter(register)
for item in register_iterable:
print(next(register_iterable))