我正在编写一个莫尔斯电码,将文本转换为莫尔斯电码并将莫尔斯电码转换为文本。我已经走得很远了。我留下的问题是如何打印它,也许是一种更聪明的方法来处理错误。
我希望代码的输出符合真实的写作规则。所以如果输入是'你好,你好吗?很好,谢谢!在莫尔斯语中,那么我希望输出是“你好,你好吗?很好,谢谢!',在文本中。
首先我认为我只需要操作 from_morse 和 to_morse 函数中的返回值。像这样:
value[0]+value[1:].lower()
但这只是涵盖了大字头,而不是新句子开始时。
但是创建一个控制返回值的函数是一种更好的方法,还是应该在我的函数中包含控件?在那种情况下,我该怎么做?
这是代码:
tomorse = { } (is a dict with text-Values and morse-Keys. in upper() stile)
frommorse = dict((b,a) for a,b in tomorse.items())
def from_morse(text):
value = ''
for word in text.split(' '):
if word == '':
value += ' '
#split the line into words
for char in word.split():
#split the word into characters
if char in frommorse:
value += frommorse[char].upper()
else:
print('Value for' ,char,' not found as morse.')
return value
def to_morse(text):
value = ''
for char in text:
if char in tomorse:
value += tomorse[char] + ' '
elif char == ' ':
value += ' '
else:
print('Value for' ,char, 'not found as character.')
break
return value
def text_controll():
while True:
try:
text = input('Enter what you want to convert: ').upper()
if text.startswith(('.','-')):
print('Your translation to text is:',from_morse(text))
else:
print('Your translation to morse is: ',to_morse(text))
except (EOFError,KeyboardInterrupt):
print('Thanks and Godbye!')
break
text_controll()