Python Object-Oriented Python Advanced Objects Construction Zone

Rodney Lyster
Rodney Lyster
1,630 Points

Python classmethod - why does this not pass? I get the correct pattern in my workspace.

Can someone help me find the error in this code? It keeps saying "Bummer: Didn't get the right pattern"

Thank you

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

    def __iter__(self):
        yield from self.pattern

    def __str__(self):
        output = []
        for blip in self:
            if blip == '.':
                output.append('dot')
            else:
                output.append('dash')
        return '-'.join(output)

    @classmethod
    def from_string(cls, item):
        x = []
        x = item.split("-")
        length = len(x)
        count = 0
        if count < length:
            if x[count] == "dash":
                x[count] = "_"
                count = count + 1
            if x[count] == "dot":
                x[count] = "."
            count = count + 1
        return cls(x)





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

2 Answers

KRIS NIKOLAISEN
KRIS NIKOLAISEN
53,693 Points

You have used:

if count < length:

That will only be evaluated once. Based on the rest of your code shouldn't you be using while?

Steven Parker
Steven Parker
182,590 Points

Did you try it with the example string in the instructions ("dash-dot")? You might need a loop to process arguments that have more than one element.