Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/312: Рейтинг темы: голосов - 312, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 8

Изменить регистр символов в строке так, чтобы первая буква каждого слова была заглавной, а остальные буквы - строчные

25.11.2019, 15:18. Показов 64172. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить задачу.

Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была заглавной, а остальные буквы - строчными.

Решение оформите в виде функции Capitalize (S), возвращающей новую строку.

Примеры
входные данные
In a hole in the ground there lived a hobbit.
выходные данные
In A Hole In The Ground There Lived A Hobbit.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.11.2019, 15:18
Ответы с готовыми решениями:

Расположить слова так, чтобы буква, на которую заканчивается слово, была такой же, как первая буква следующего слова
Даны простые слова. Нужно составить такой порядок, чтобы буква на которую заканчивается слово была такой же как первая буква следующего...

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

Как сделать ucfirst() в UTF-8 в массиве, чтобы только первая буква была заглавной
Возник вопрос: Как сделать ucfirst() в UTF-8 в массиве, чтобы только первая буква была заглавной. Вариант mb_convert_case() не...

26
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
25.11.2019, 15:40
Лучший ответ Сообщение было отмечено ЕленаСтеп как решение

Решение

Цитата Сообщение от ЕленаСтеп Посмотреть сообщение
Capitalize (S),
беги оттуда про пеп-8 там не знают

Python
1
2
3
4
5
6
>>> def capitalize(line):
...     return ' '.join([s.capitalize() for s in line.split()])
... 
>>> text = 'In a hole in the ground there lived a hobbit.'
>>> print(capitalize(text))
In A Hole In The Ground There Lived A Hobbit.
4
4 / 4 / 0
Регистрация: 12.04.2020
Сообщений: 56
27.04.2020, 18:02
Доброго времени суток! Данная задача решается простой функцией title


Python
1
2
3
4
def Capitalize(S):
   return S.title()
S = input()
print (Capitalize(S))
0
4 / 4 / 0
Регистрация: 20.03.2021
Сообщений: 54
20.03.2021, 19:06
Уважаемый но данный код не работает например для примера
-a-bb-ccc
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.03.2021, 19:19
Цитата Сообщение от eiktyrnir Посмотреть сообщение
данный код не работает
Покритиковал - предлагай варианты
Python
1
2
3
4
import re
 
s = 'a-aaa-aaaa zzz ccc, ,zzzxz,'
print(re.sub(r'\w+', lambda x: x.group().title(), s))
0
4 / 4 / 0
Регистрация: 20.03.2021
Сообщений: 54
20.03.2021, 19:32
Python
1
2
3
4
import re
 
s = 'a-aaa-aaaa zzz ccc, ,zzzxz,'
print(re.sub(r'\w+', lambda x: x.group().title(), s))
Уважаемый а что это означает? Немогу пока понять...Вот мой код
Python
1
2
3
4
def capitalize(s):
  return ' '.join([s.capitalize() for s in s.split()])
s=input()
print(capitalize(s))
У меня есть на задачу ограничения - код должен начинаться и заканчиваться определенными командами а именно
Python
1
2
3
4
def capitalize(s):
  ...
s=input()
print(capitalize(s))
То что вы предложили как вариант
Python
1
2
3
4
import re
 
s = 'a-aaa-aaaa zzz ccc, ,zzzxz,'
print(re.sub(r'\w+', lambda x: x.group().title(), s))
...каким образом сюда можно прикрутить?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.03.2021, 19:38
Python
1
2
def capitalize(s):
    return re.sub(r'\w+', lambda x: x.group().title(), s)
0
4 / 4 / 0
Регистрация: 20.03.2021
Сообщений: 54
20.03.2021, 19:47
iSmokeJC, уважаемый...
на код
Python
1
2
3
4
def capitalize(s):
  return re.sub(r'\w+', lambda x: x.group().title(), s)
s=input()
print (capitalize(s))
при вводе
Code
1
-a-bb-ccc
выдает
Code
1
2
3
4
5
6
Traceback (most recent call last):
  File "C:/Коля/словапрописнойбуквой4.py", line 6, in <module>
    print (capitalize(s))
  File "C:/Коля/словапрописнойбуквой4.py", line 4, in <module>
    #print('Exiting sandbox process')
builtins.NameError: name 're' is not defined
Я непонимаю что не так......(((((
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
20.03.2021, 19:48
Цитата Сообщение от eiktyrnir Посмотреть сообщение
Я непонимаю что не так
я вам уже ответил в дубль теме что у вас не так!
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.03.2021, 20:14
Цитата Сообщение от eiktyrnir Посмотреть сообщение
что не так
Барабанная дробь.....
Тадам!
Цитата Сообщение от iSmokeJC
import re
0
4 / 4 / 0
Регистрация: 20.03.2021
Сообщений: 54
20.03.2021, 20:22
iSmokeJC, спасибо за подсказку...Программа заработала...в копиляторе Python-а на компьютере, но увы школа СИРИУСа упорно не принимает и это решение((((
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.03.2021, 20:26

Не по теме:

eiktyrnir, да, да, про школу сириус и ее учащихся мы хорошо наслышаны...


Это наверно потому, что надо использовать то, что вы проходили. А что именно, нам, увы, неведомо.
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
20.03.2021, 23:43
iSmokeJC, я понимаю почти, что делает ваш код,
Python
1
2
s = 'a-aaa-aaaa zzz ccc, ,zzzxz,'
print(re.sub(r'\w+', lambda x: x.group().title(), s))
то есть r"\w+" - это вы обращаетесь ко всем словам
заменяете их на lambda x: x.group().title()
и все это делается в строке s
с помощью метода re.sub
но как работает x.group().title()?

Добавлено через 1 минуту
и кстати в интернете написано \w - Любая цифра или буква (\W — все, кроме буквы или цифры)
а + - 1 и более вхождений шаблона слева, но как работает + и что значит 1 и более вхождений шаблона слева?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.03.2021, 09:28
Цитата Сообщение от gray621 Посмотреть сообщение
\w - Любая цифра или буква
Невнимательно читал
Цитата Сообщение от gray621 Посмотреть сообщение
но как работает + и что значит 1 и более вхождений шаблона слева?
Что непонятного во фразе "один или более раз"?
z+ - найдет wazzzza, wazaaa, wwaazzaaa.
Цитата Сообщение от gray621 Посмотреть сообщение
как работает x.group().title()?
Блин, интересуешься регулярками - потрать немного времени на чтение чего-нибудь по теме. Я врядли расскажу лучше оф.документации.
re.sub() заменяет найденный шаблон (первый аргумент) другим шаблоном (второй аргумент) в искомой строке (третий аргумент). В замещающий шаблон можно поставить как просто текст, так и другое регулярное выражение. Например то, что уже найдено первым шаблоном. group(n) позволяет обращаться к определенной захваченой группе, т.к. их может быть несколько. Просто group() - это группа 0 - вся регулярка.
Т.е. в данном случае, к каждому совпадению применяем title() и заменяем.
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
21.03.2021, 11:57
iSmokeJC, понятно, но что тогда такое \w, где я читал было так написано
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.03.2021, 12:03
gray621, не знаю, где ты читал. Вот заходим на оф.доку и видим
\w
For Unicode (str) patterns:
Matches Unicode word characters; this includes most characters that can be part of a word in any language, as well as numbers and the underscore. If the ASCII flag is used, only [a-zA-Z0-9_] is matched.
0
4 / 4 / 0
Регистрация: 20.03.2021
Сообщений: 54
21.03.2021, 13:24
iSmokeJC, мы проходим это в рамках работы с символами. Все что нам рассказали это как действует следующие коды...для нахождения букв в тексте с заглавной или не заглавной
Python
1
2
3
4
if c.isdigit():
if c.isupper():
if c.islower():
if c.isalpha():
и мы можем использовать для того чтобы сделать букву заглавной следующий код ASCII
Python
1
2
3
c=input()
c=chr(ord(c)+32)
print(c)
или проще
Python
1
2
print (c.upper())
print (c.lower())
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
21.03.2021, 13:48
iSmokeJC, ну значит \w - это любая цифра или буква, в документации же написано так

Добавлено через 2 минуты
а \w+ - это получается все слова, без пробелов, т.к. \w - это все буквы или цифры и с + получаются слова
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.03.2021, 13:52
Цитата Сообщение от gray621
в документации же написано так
Перечитай еще раз. Внимательно
0
5 / 5 / 0
Регистрация: 21.03.2021
Сообщений: 8
21.03.2021, 15:15
Python
1
2
3
4
5
6
7
8
9
10
11
12
def Capitalize(S):
    c=''
    for i in range(0,len(S)):
        if S[i].isupper() and S[i-1].isalpha()==True and i!=0:
            c+=S[i].lower()
        elif S[i].islower() and S[i-1].isalpha()==False or i==0:
            c+=S[i].upper()
        else:
            c+=S[i]
    return c
S = input()
print(Capitalize(S))
Он подойдёт.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2021, 15:15
Помогаю со студенческими работами здесь

В каждой строке файла сделать первую букву заглавной, остальные буквы перевести в нижний регистр
Всем приветы! Ребята, появилась у меня такая вот задача, как решить не очень понимаю. Помооооогите!))) Имеется текстовый файл, в нем...

Как создать pattern первая буква заглавная, остальные строчные
Я хочу чтобы в форме проверялось что в текстовом поле первая буква обязательно заглавная, остальные строчные!Подскажите пожалуйста как это...

Поменять местами слова строки так, чтобы первая буква следующего слова совпадала с последней буквой предыдущего
Мне нужно создать программу, которая получает на вход строку, состоящую из слов(подстрок), их разбивает, а потом выводит в виде цепочки...

Напечатать слова так, чтобы последняя буква каждого слова совпадала с первой буквой следующего
В предложении все слова начинаются с различных букв. Напечатать (если можно) слова предло- жения в таком порядке, чтобы последняя буква...

Переставить слова текста так, чтобы последняя буква каждого слова совпадала с первой буквой следующего
В тексте нет слов, начинающихся одинаковыми буквами. Переставить слова текста в таком порядке, чтобы последняя буква каждого слова...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru