摩斯转换
morse = {
'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': '--..',
'1': '.----',
'2': '..---',
'3': '...--',
'4': '....-',
'5': '.....',
'6': '-....',
'7': '--...',
'8': '---..',
'9': '----.',
'0': '-----',
'?': '..--..',
'.': '.-.-.-'
}
reverse_morse = dict()
for k, v in morse.items():
reverse_morse[v] = k
def morse2line(line):
new_line = ""
for string in line.split(' '):
for char in string.split(' '):
new_line += reverse_morse.get(char, char)
new_line += ' '
return new_line
def line2morse(line):
new_line = ""
for char in line:
new_line += morse.get(char, char)
new_line += " "
return new_line
def morse_translator():
if len(sys.argv) < 3:
print("please provides a line.")
exit(1)
opts, args = getopt.getopt(sys.argv[1:], "lm")
translator = line2morse
for opt, _ in opts:
if opt == '-l':
translator = line2morse
elif opt == '-m':
translator = morse2line
else:
print('invalid option %s' % opt)
exit(1)
line = args[0]
return translator(line)
print(morse_translator())
使用示例:
[root@dev ~]# python test.py -l shihr
... .... .. .... .-.
[root@dev ~]# python test.py -m -- '... .... .. .... .-.'
shihr