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

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

25.11.2019, 15:18. Показов 63951. Ответов 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 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
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
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
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru