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

Morse code printer: __str__ method

The task is to write a str method in de Letter class that loops over the pattern of S and returns a string where every '.' from the pattern is replaced by the string 'dot' and every '_' by 'dash'. All items from the pattern list 'dot' and 'dash' are joined by a hyphen.

I have tried looping by index, giving the pattern as argument in the dunder str method, working with list.original.copy()-syntax for the looping part but nothing worked. A hint button or code checker would come in very handy, I have no clue of where my mistake is.

morse.py
class Letter:
    def __init__(self, pattern=None):
        self.pattern = pattern

    def __str__(self):
        a = []
        from c in self.pattern:
            if c == ".":
                a.append("dot")
            elif c == "_":
                a.append("dash")
        return "-".join(a) 

class S(Letter):
    def __init__(self):
        pattern = ['.', '.', '.']
        super().__init__(pattern)

1 Answer

Steven Parker
Steven Parker
229,644 Points

You're very close, but the keyword to create a loop is "for" instead of "from".