Правильно верхний корпус нижнего регистра строки

Я пишу азбуку Морзе, которая преобразует текст в азбуку Морзе и текст в текст. Я получил довольно далеко. Проблема, которую я оставил, состоит в том, как напечатать это и возможно более умный способ справиться с ошибками.

Я хочу, чтобы вывод кода соответствовал реальным правилам написания. Так что, если вход "привет, как ты? хорошо, спасибо!' затем я хочу, чтобы вывод был "Привет, как дела? Хорошо, спасибо! ", В тексте.

Сначала я подумал, что мне просто нужно манипулировать возвращаемым значением в функциях 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()

1 ответ

Для твоего здравомыслия from_morse а также to_morse следует делать то, что они говорят: преобразовать в текст и Морзе по мере необходимости.

Затем вы можете написать другую функцию, чтобы преобразовать предложение в предложение с заглавными буквами и пунктуацией.

Вы можете определить конец предложения, посмотрев на точки, восклицательные знаки и вопросительные знаки. Однако кто-то может также написать "как дела???" что означает, что вы не хотите определять предложения "Как дела?", "?" а также "?". Другими словами: вам также нужно обнаружить последовательности символов, которые могут завершить предложение.

Другая проблема заключается в том, что кто-то может использовать знак препинания в предложении, например, упоминание названия компании Yahoo!.

Другие вопросы по тегам