Как сделать заглавными последнюю букву каждого слова в строке
Есть вопрос по задаче.
Условие:
Дана строка. Сделайте заглавной последнюю букву каждого слова в этой строке.
Пробовал написать код на основе кода который делает заглавной вторую букву каждого слова в строке.
my_string = input("Введите строку: ").split()
counter = 1
new_list = []
for i in my_string:
if counter == my_string[-1]:
i = i.capitalize()
new_list.append(i)
counter += 1
print(*new_list)
Но он не делает последнюю букву заглавной.
Введите строку: python language
python language
Подскажите в чём ошибка.
Ответы (2 шт):
Можно написать функцию, которая будет разбивать строку на список слов и для каждого из них отделять последний символ i[:-1]
, и присоединять его уже в верхнем регистре i[:-1].upper()
:
def upper_last_symb(my_string: str) -> list:
return [i[:-1] + i[-1].upper() for i in my_string.split()]
my_string = input("Введите строку: ")
list_w_words = upper_last_symb(my_string)
for word in list_w_words:
print(word)
Ввод:
стол ручка тетрадь
Вывод:
стоЛ
ручкА
тетрадЬ
Сделайте заглавной последнюю букву каждого слова в этой строке
Давайте декомпозируем задачу.
- сделайте заглавной
- последнюю букву
- каждого
- слова
- в этой строке
Реализовывать это всё нужно в обратном порядке:
- "в этой строке" - вводим строку через
input
- "слова" - введённую строку нужно разбить на слова с помощью функции
split
- "каждого" - полученные отдельные слова нужно перебрать с помощью цикла
- "последнюю букву" - вырезаем из слова два куска с помощью срезов: до последней буквы и сама последняя буква
- "сделайте заглавной" - полученную ранее последнюю букву делаем заглавной с помощью функции
upper
- Ну и последний шаг - нужно собрать всё обратно:
- слепить обратно слова, теперь уже с заглавной последней буквой
- слепить обратно предложения (или это тут не надо? из задания непонятно, возможно достаточно вернуть список слов)
- вернуть полученный результат
Хорошо бы ещё посмотреть примеры к этой задаче, потому что слова могут быть разделены пробелами, и тогда split
будет достаточно. А могут быть разделены другими знаками препинания, и тогда будет лучше использовать регулярные выражения для поиска слов.
Ну а теперь сравните план выше со своим кодом. Мягко говоря, многое у вас не так.
P.S. Увидел пример. У вас всё просто, split
с дефолтными аргументами достаточно.
P.P.S. Ладно, раз всё-равно уже код все пишут, то вот однострочник:
print(' '.join(f'{s[:-1]}{s[-1].upper()}' for s in input().split()))