Python 正确使用上套管和下套管柱

Python 正确使用上套管和下套管柱,python,user-input,uppercase,casing,Python,User Input,Uppercase,Casing,我正在写一个莫尔斯电码,可以将文本转换成莫尔斯电码,将莫尔斯电码转换成文本。我已经走得很远了。我留下的问题是如何打印它,也许是处理错误的更聪明的方法 我希望代码的输出符合真正的编写规则。因此,如果输入是“你好,你好吗?”?很好,谢谢在morse中,我希望输出为“你好,你好吗?”?好的,谢谢,在文本中 首先,我认为我只需要操纵from_morse和to_morse函数中的返回值。如下所示: value[0]+value[1:].lower() 但是,这仅仅涵盖了头像的大,而不是如果一个新的句子开

我正在写一个莫尔斯电码,可以将文本转换成莫尔斯电码,将莫尔斯电码转换成文本。我已经走得很远了。我留下的问题是如何打印它,也许是处理错误的更聪明的方法

我希望代码的输出符合真正的编写规则。因此,如果输入是“你好,你好吗?”?很好,谢谢在morse中,我希望输出为“你好,你好吗?”?好的,谢谢,在文本中

首先,我认为我只需要操纵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()

为了你自己的理智,
从_morse
到_morse
应该按照他们说的做:根据需要转换成文本和莫尔斯

然后,您可以编写另一个函数,将一个句子转换为带有大写字母和标点符号的句子

你可以通过寻找点、感叹号和问号来判断句子的结尾。然而,有人也可以写“你好吗?”,这意味着你不想检测到“你好吗?”、“和”。换句话说,您还需要检测可能结束句子的字符序列


另一个问题是,有人可能会在句子中使用标点符号,例如提到公司名称Yahoo

嗨!因此,从一个文本字符串中,您希望检测句子边界并相应地大写?检测标点符号后跟空格
“!”
在大多数情况下都会起作用“你好!!!你好吗??”,但同样存在标点名称、引号等问题。