Python

Программирование на Python

Написать функцию capitalize(s), которая принимает на вход исходную строку s и возвращает строку с восстановленными заглавными буквами.
Функция работает по следующему алгоритму:
* сделать заглавной первую букву в строке, не считая пробелы;
* сделать заглавной первую букву после точки, восклицательного или вопросительного знака, не считая пробелы.
def capitalize(s):
# Разделяем строку на список слов, используя пробелы как разделители
words = s.split()

# Обрабатываем первое слово отдельно
if len(words) > 0:
# Делаем первую букву заглавной
words[0] = words[0][0].upper() + words[0][1:]

# Обрабатываем остальные слова
for i in range(1, len(words)):
# Если предыдущее слово заканчивается на точку, восклицательный или вопросительный знак,
# делаем первую букву текущего слова заглавной
if words[i-1][-1] in ".!?":
words[i] = words[i][0].upper() + words[i][1:]

# Склеиваем слова обратно в строку и возвращаем её
return " ".join(words)


Например, вызов capitalize("hello, world! this is a test.") вернёт строку "Hello, world! This is a test.".
ВЯ
Вася Я
1 046
Лучший ответ
[deleted]
Дмитрий Павроз
Дмитрий Павроз
34 940
 def capitalize(s): 
result = ""
capitalize_next = True

for i in range(len(s)):
if s[i] == " ":
result += " "
capitalize_next = True
elif capitalize_next:
result += s[i].upper()
capitalize_next = False
else:
result += s[i]

if s[i] in ".!?":
capitalize_next = True

return result
Ахметхан Абдыханов не совсем корректно, в выводе все слова с заглавной буквы.
Ахметхан Абдыханов к сожалению, ответ тот же. :(
пример функции на Python, которая реализует требуемый алгоритм:

def capitalize(s):
# Разбиваем строку на список слов
words = s.split()

# Обрабатываем первое слово
if words:
words[0] = words[0].capitalize()

# Обрабатываем остальные слова
for i in range(1, len(words)):
# Если перед словом есть точка, восклицательный или вопросительный знак,
# то делаем заглавной первую букву слова, не считая пробелы
if words[i-1][-1] in '.!?':
words[i] = words[i].capitalize()

# Соединяем слова обратно в строку
return ' '.join(words)
Пример использования:


s = 'привет, мир! как дела?'
print(capitalize(s))
Вывод:

Привет, мир! Как дела?
Ободок