Условия задачи:

 

Корректор предложений. Напишите программу с функцией, принимающей в качестве аргумента строковое значение и возвращающей его копию, в котором первый символ ка­ждого предложения написан в верхнем регистре. Например, если аргументом является
"привет! меня зовут джо. а как твое имя?", то эта функция должна вернуть строковое зна­чение 'Привет! Меня зовут Джо. А как твое имя?'. Программа должна предоставить пользователю возможность ввести строковое значение и затем передать его в функцию.
Модифицированное строковое значение должно быть выведено на экран.

 

Решение задачи:

#общая концепция. С большой буквы начинается сообщение в любом случае.
#Дальше большая буква появляется после знаков препинания точки восклицательного
#и вопросительного знаков отслеживаем эти знаки как только появились
#через 1 знак переносим букву в большм регистре. 


def main():
    def edit_msg(value):
        new_msg = ''
        flag = False
        for i in range(len(value)):
            if i == 0:
                if value[i].isalpha():
                    new_msg += value[i].upper()
                else:
                    new_msg += value[i].upper()
            elif (value[i] == '.' or value[i] == '!' or value[i] == '?') and i !=len(value)-1:
                new_msg += value[i]
                litter = i + 2
                flag = True
                continue
            elif flag:
                if i == litter:
                    new_msg += value[i].upper()
                    flag = False
                else:
                    new_msg += value[i]
            else:
                new_msg += value[i]
        return new_msg
    msg = input('Введите сообщение: ')
    print(f'Старое сообщение: {msg}')
    print(f'Новое сообщение: {edit_msg(msg)}')
main()