gpt4 book ai didi

python - 编写面向对象的摩尔斯电码翻译器

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:10 25 4
gpt4 key购买 nike

下面是我对 reddit.com/r/dailyprogrammer #93 的解决方案(简单)。它是一个在英语和摩尔斯电码之间进行转换的 Python 脚本。

String_To_Translate 是一个很好的类示例吗?我违反约定了吗?我怎样才能改进这段代码并使其更具可读性和 Python 风格?

非常感谢任何建议!

import re

morse_code_dict = { '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':'-----',
',':'--..--',
'.':'.-.-.-',
'?':'..--..',
'/':'-..-.',
'-':'-....-',
'(':'-.--.',
')':'-.--.-',
' ':' ',
}


class String_To_Translate:
def __init__(self, string):
self.string = string
self.Translated = ''
self.lang = ''

def determine_lang(self):
exp = r'[a-zA-Z\,\?\/\(\)]'#regexp for non morse code char
if re.search(exp, self.string) == None:
self.lang = 'm'
else:
self.lang = 'eng'

def prep(self):
if self.lang == 'eng':
#get rid of whitespace & warn user
(self.string, numWhitespaceReplacements) = re.subn(r'\s', ' ', self.string)
if numWhitespaceReplacements > 0:
print 'Some whitespace characters have been replaced with spaces.'
#get rid of characters not in dict & warn user
(self.string, numReplacements) = re.subn(r'[^a-zA-Z\,\?\/\(\)\.\-\s]', ' ', self.string)
if numReplacements > 0:
print 'Some ({0}) characters were unrecognized and could not be translated, they have been replaced by spaces.'.format(numReplacements)
#convert to lowercase
self.string = self.string.lower()

def translate_from_morse(self):
eng_dict = dict([(v, k) for (k, v) in morse_code_dict.iteritems()])

def split_morse(string):
d = ' '
charList = [[char for char in word.split() + [' ']] for word in string.split(d) if word != '']
charList = [item for sublist in charList for item in sublist]
print charList
return charList

charList = split_morse(self.string)
for char in charList:
self.Translated += eng_dict[char]

def translate_from_eng(self):
charList=list(self.string)
for char in charList:
self.Translated += morse_code_dict[char] + ' '

def translate(self):
self.determine_lang()
if self.lang == 'm':
self.translate_from_morse()
elif self.lang == 'eng':
self.prep()
self.translate_from_eng()
else:
print 'shit'

if __name__=="__main__":
translateme = String_To_Translate(raw_input('enter a string: '))
translateme.translate()
print translateme.Translated
print 'translating back'
test = String_To_Translate(translateme.Translated)
test.translate()
print test.Translated

最佳答案

这很好地表达为 binary tree :

enter image description here

关于python - 编写面向对象的摩尔斯电码翻译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12208973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com