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

Odane Williams
Odane Williams
6,692 Points

I am getting the try again error

I'm honestly stumped on this one. Is it my syntax?

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

    def __str__(self, pattern=None):
        self.pattern = pattern
        morse = []
        for item in pattern:
            if item == ".":
                morse.append("dot")
            elif item == "-":
                morse.append("dash")
        "-".join(morse)



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

1 Answer

Steven Parker
Steven Parker
231,261 Points

Here's a few hints:

  • the function should not require an argument, it should use the internal pattern
  • it should return "dash" for every "_" (underscore), but it currently looks for "-" (hyphen) instead
  • the final string still needs to be _return_ed
Odane Williams
Odane Williams
6,692 Points

I revised it with a different way to loop through pattern and adjusted the code according top your hints. I'm still getting the same error. Syntax is what always gets me.

class Letter: def init(self, pattern=None): self.pattern = pattern

def __str__(self):
    pattern = self.pattern
    morse = []
    for item in range(len(pattern)):
        if item == ".":
            morse.append("dot")
        else item == "_":
            morse.append("dash")
    return "-".join(morse)

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

Steven Parker
Steven Parker
231,261 Points

Converting the pattern into a range makes the "item"s numbers now that do not match in the tests.

Also, converting the "elif" into an "else" is creating a syntax error.

Both of those were OK in the original code.