We add the definition of the class Message
to the top of the morse
module.
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:
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