我只是尝试了一些来自工作簿的代码并且有不同的练习,但我想尝试一个预先存在的消息,我已经做到这一点,但我无法弄清楚如何完成它。我该怎么做呢?
alphabet = {"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": "--.."}
message = ".-- .... . .-. . / .- .-. . / -.-- --- ..-"
for key,val in alphabet.items():
if message in alphabet:
print(key)
答案 0 :(得分:7)
这里的根本问题是您需要将消息拆分为可以单独解码的单独部分。
消息首先用斜杠(单词)分隔,然后用空格(字符)分隔。所以我们可以在这里使用MovieId, GenreId, GenreName
两次来获取元素:
split()
现在我们需要一些东西来解码角色。但是存储一个字符作为键的字典没有多大意义:我们想要解码消息,所以这里的点和连字符需要是键,而不是字母字符。
我们可以自己构建一个新词典,或者自动构建一个新词典:
for word in message.split('/'):
for character in word.strip().split():
# ... decode the character
那么我们可以使用查找方法:
decode_dict = {v: k for k, v in alphabet.items()}
现在我们获取已解码的消息,但每个字符都在一个单独的行上。但是,我们可以使用decode_dict = {v: k for k, v in alphabet.items()}
for word in message.split('/'):
for character in word.strip().split():
print(decode_dict[character]) # print the decoded character
print(' ') # print space after the word
和生成器来生成字符串:
str.join
结果就是解码后的字符串:
' '.join(''.join(decode_dict[character] for character in word.strip().split())
for word in message.split('/'))
答案 1 :(得分:5)
您需要撤消字典:
alphabet1 = {b:a for a, b in alphabet.items()}
message = ".-- .... . .-. . / .- .-. . / -.-- --- ..-"
decoded_message = ''.join(alphabet1.get(i, ' ') for i in message.split())
输出:
'WHERE ARE YOU'