Bra*_*itt 7 python dictionary morse-code
我想使用Python 3+将莫尔斯电码转换为英语我已经设法使用此http://code.activestate.com/recipes/578407-simple-morse-code-translator-in-python/将英语转换为莫尔斯电码
但我想将莫尔斯电码转换为英语
我试图一次做一个字符,但问题是莫尔斯代码字母不像英文字母那样长,所以E是"." 而S是"......",我的问题是字典循环会找到"." 并将它与E匹配,所以我没有得到S我得到"EE E",而是试图通过检测空格并一次一个字来解决这个问题,但不是在单词中查找字母而是搜索整个单词字典我是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()
Run Code Online (Sandbox Code Playgroud)
这段代码接受了一个字,并尝试查阅字典,但它不起作用我也尝试搜索每个单独的莫尔斯代码字母对字典,但问题是,你不能告诉一个字母何时开始和结束,所以"......"出现"EEE"而不是"S",我不知道如何解决这个问题
我也尝试过搜索解决方案,但只用Java发现它们,我不懂Java
Cor*_*mer 18
一旦在一个方向上定义映射,就可以使用dict理解以另一种方式映射它
CODE = {'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': '----.'
}
CODE_REVERSED = {value:key for key,value in CODE.items()}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用join生成器表达式来执行转换.
def to_morse(s):
return ' '.join(CODE.get(i.upper()) for i in s)
def from_morse(s):
return ''.join(CODE_REVERSED.get(i) for i in s.split())
>>> to_morse('hello')
'.... . .-.. .-.. ---'
>>> from_morse('.... . .-.. .-.. ---')
'HELLO'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14938 次 |
| 最近记录: |