我想用Python 3+莫尔斯代码转换为英文 我已成功地将英文使用此 http://code.activestate.com/recipes/578407-simple-morse-code-translator-in-python/莫尔斯电码,以英文python3
到莫尔斯电码,但我想莫尔斯代码转换为英文
我一直试图做一个文字,但问题是莫尔斯的代码字母不是像英文字母那么长,所以E是“。”。 S是“...”,我遇到的问题是字典循环会找到“。”。并与E匹配,所以我没有得到S我得到“EEE” 我试图通过检测空格并一次处理一个单词来解决此问题,但不是在单词中查找字母,而是搜索整个单词字典 我是新来的Python和字典,我不知道如何区分E“。”和S“...”搜索时,我的字典
这里是我的代码
# defines the dictionary to convert morse to english
CODE_reversed = {'..-.': 'F', '-..-': 'X',
'.--.': 'P', '-': 'T', '..---': '2',
'....-': '4', '-----': '0', '--...': '7',
'...-': 'V', '-.-.': 'C', '.': 'E', '.---': 'J',
'---': 'O', '-.-': 'K', '----.': '9', '..': 'I',
'.-..': 'L', '.....': '5', '...--': '3', '-.--': 'Y',
'-....': '6', '.--': 'W', '....': 'H', '-.': 'N', '.-.': 'R',
'-...': 'B', '---..': '8', '--..': 'Z', '-..': 'D', '--.-': 'Q',
'--.': 'G', '--': 'M', '..-': 'U', '.-': 'A', '...': 'S', '.----': '1'}
def main():
#takes user message and makes it upper case
msg = input('MESSAGE: ')
msg = msg.upper()
addtolist = "" # creates blank string
message = [] # creates blank list
for i in msg:
addtolist = addtolist + i # adds every letter in MSG into a string until it finds a space
addtolist.upper() # makes every letter uppercase
if i == " ": # if it detects a space
message.extend(addtolist)
# adds the previously created addtolist to a list, this makes one word
addtolist = "" # clears previous variable
for i in message:
# for every word in the list
str(i) # make it into a string
print(CODE_reversed[i()]) # search the dictionary for that word
if __name__ == "__main__":
main()
该代码接受一个单词,并尝试看看它反对字典,但它不工作 我也尝试在字典中搜索每个单独的莫尔斯电码字母,但问题在于,你无法分辨信件何时开始和结束,所以“...”以“EEE”而不是“S”出现,我不知道不知道如何解决这个问题
我也试过寻找解决方案,但只发现它们在Java中,我不知道Java
您必须扫描输入,直到您到达指示下一个字符的暂停。例如,如果你输入了'“......”',那么点之间就有空格,而你有三个'''''s, “......”'。你可以通过在输入上使用split方法来做到这一点。 – skyking
这是一个数学问题,代码(莫尔斯)不是一个内射函数。你必须知道代码元素之间的空格(中断)。 https://en.wikipedia.org/wiki/Injective_function – cansik