1

I'm making a program where the Morse Code is decrypted into English.
However, when the program is running and I put the Morse Code in (ex. *- which should result in the program printing out A) the program only gives a blank space.

message = input("Please type a message to encrypt. ")
new_message = ""
letters = {"*-": "A",
           "-***": "B",
           "-*-*": "C"}
for let in message:
    if let in letters:
        new_message += letters[let]
print(new_message)
   

I'm looking for a way to solve this problem by using the replacing method above.

maciejwww
  • 1,067
  • 1
  • 13
  • 26

3 Answers3

2

Try this solution to go from English to Morse, and vice-versa

def english_to_morse(message):
    letters = {'A': '*-',
               'B': '-***',
               'C': '-*-*'}
    return ''.join([letters[letter]+'|' for letter in message if letter in letters])

def morse_to_english(message):
    letters = {'A': '*-',
               'B': '-***',
               'C': '-*-*'}
    letters = {v: k for k, v in letters.items()}
    message = message.split('|')[0:-1]
    return ''.join([letters[letter] for letter in message if letter in letters])

message = input("Please type a message to encrypt. ")
print(english_to_morse(message))

message = input("Please type a morse code message to decrypt. Separate codes by '|' ")
print(morse_to_english(message))
JahKnows
  • 2,618
  • 3
  • 22
  • 37
0

I assume your input would be like this *-/-***, so every letters separated by /.

#split every letter into list of letters
message = input('Please type a message to encrypt: ').split('/')
#join the list after decrypt it
print("".join([letters[letter] for letter in message]))
fahadh4ilyas
  • 450
  • 2
  • 13
-1

Here is a solution:

message = input("Please type a message to encrypt: ")
new_message = ""
letters = {".-": "A",
           "-...": "B",
           "-.-.": "C",}

if letters[message]:
    new_message = letters[message]
else:
    new_message = "This cannot be turned to morse code"
print(new_message)

Inputting .- will return A.

Worm
  • 1,313
  • 2
  • 11
  • 28