1

我正在制作一个将莫尔斯电码解密为英文的程序。
但是,当程序运行并且我将摩尔斯电码放入(例如,*-这应该导致程序打印出来A)时,程序只给出一个空格。

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)
   

我正在寻找一种通过使用上述替换方法来解决此问题的方法。

4

3 回答 3

2

试试这个解决方案从英语到莫尔斯语,反之亦然

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))
于 2018-05-23T04:50:41.563 回答
0

我假设你的输入是这样的*-/-***,所以每个字母都用/.

#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]))
于 2018-05-23T04:43:50.243 回答
-1

这是一个解决方案:

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)

输入.-会返回A

于 2018-05-23T04:45:05.027 回答