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':'----.', ' ':'/'}# We need to invert the dictionary. This will create a dictionary# that can go from the morse back to the lettermorse_to_letter = {}for letter in letter_to_morse: morse = letter_to_morse[letter] morse_to_letter[morse] = letterdef encode(message):if"!"in message:raiseValueError(f"'!' is not valid in English strings") morse = [letter_to_morse[letter] for letter in message.lower()] morse_message =" ".join(morse)return morse_messagedef decode(message): english = [morse_to_letter[letter] for letter in message.split(" ")] english_message ="".join(english)return english_message
morse.py
import morsemessage ="SOS We have hit an iceberg and need help quickly"encoded_message = morse.encode(message)print(f"Incoming message: {message}")print(f" Morse encoded: {encoded_message}")
Terminal/Command Prompt
python morse.py
Incoming message: SOS We have hit an iceberg and need help quickly
Morse encoded: ... --- ... / .-- . / .... .- ...- . / .... .. - / .- -. / .. -.-. . -... . .-. --. / .- -. -.. / -. . . -.. / .... . .-.. .--. / --.- ..- .. -.-. -.- .-.. -.--