Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Object-Oriented Python Dice Roller Boards

Let's make all Board instances iterable so we can loop through their cells attribute. Inside the Board class, define

Can someone please look at my code.

Thank you

boards.py
class Board:
    def __init__(self, width, height):
        self.width = width
        self.height = height
        self.cells = []
        for y in range(self.height):
            for x in range(self.width):
                self.cells.append((x, y))

 def __iter__(self):    
        for cell in self.cells:
            yield cell


class TicTacToe(Board):
    def __init__(self, width=3, height=3):
        super().__init__(width, height) 

Your iter method needs to be tabbed in once:

class Board:
    def __init__(self, width, height):
        self.width = width
        self.height = height
        self.cells = []
        for y in range(self.height):
            for x in range(self.width):
                self.cells.append((x, y))

    def __iter__(self):
        for _ in self.cells:
            yield from self.cells

class TicTacToe(Board):
    def __init__(self, width=3, height=3):
        super().__init__(width, height)

I was stuck on this challenge as well, and your code helped me, so thank you.

1 Answer

Josh Keenan
Josh Keenan
19,652 Points

Comment provides a good solution.