Intermediate Python

We add the definition of the class Message to the top of the morse module.

morse.py
class Message:
    def __init__(self, message):
        self.message = message
        
        if "." in self.message or "-" in self.message:
            self.is_morse = True
        else:
            self.is_morse = False
    
    def as_morse(self):
        if self.is_morse:
            return self.message
        
        return encode(self.message)
    
    def as_english(self):
        if not self.is_morse:
            return self.message
        
        return decode(self.message)

################################################
# Everything after here is identical to before #
################################################

letter_to_morse = {
    'a':'.-', 'b':'-...', 'c':'-.-.', 'd':'-..', 'e':'.', 'f':'..-.', 
    'g':'--.', 'h':'....', 'i':'..', 'j':'.---', 'k':'-.-', 'l':'.-..', 'm':'--', 
    'n':'-.', 'o':'---', 'p':'.--.', 'q':'--.-', 'r':'.-.', 's':'...', 't':'-',
    'u':'..-', 'v':'...-', 'w':'.--', 'x':'-..-', 'y':'-.--', 'z':'--..',
    '0':'-----', '1':'.----', '2':'..---', '3':'...--', '4':'....-',
    '5':'.....', '6':'-....', '7':'--...', '8':'---..', '9':'----.', ' ':'/'
}


def encode(message):
    morse = []

    for letter in message:
        letter = letter.lower()
        morse_letter = letter_to_morse[letter]
        morse.append(morse_letter)

    morse_message = " ".join(morse)
    
    return morse_message


morse_to_letter = {}
for letter in letter_to_morse:
    morse = letter_to_morse[letter]
    morse_to_letter[morse] = letter


def decode(message):
    english = []

    morse_letters = message.split(" ")

    for letter in morse_letters:
        english_letter = morse_to_letter[letter]
        english.append(english_letter)

    english_message = "".join(english)
    
    return english_message

We then change our test_morse.py file as directed:

test_morse.py
from morse import Message

my_message = Message("hello world")
morse_string = my_message.as_morse()

incoming_message = Message(morse_string)
decoded_string = incoming_message.as_english()

print(decoded_string == "hello world")
$
python test_morse.py
True