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

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

25.11.2019, 15:18. Показов 63793. Ответов 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,291
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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru