Преобразовать строку-предложение так, чтобы каждое слово начиналось с заглавной буквы, НЕ ИСПОЛЬЗУЯ TITLE(ВАЖНО)
Дана строка-предложение на английском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы. При этом желательно не использовать title(не спрашивайте, почему)
a = input("Введите строку-предложение на английском языке: ")
c = a[0]
s = c.upper()
for i in range(1, len(a)):
if a[i] == " ":
s = s + a[i]
v = a[i+1]
n = v.upper()
s = s + n
else:
s = s + a[i]
print(s)
В итоге при вводе: "My name is" у меня получается "My Nname Iis". Как мне избавиться от повторяющихся букв?
Ответы (3 шт):
Автор решения: Эникейщик
→ Ссылка
Чуток подправить индексы
if a[i-1] == " ": # <---
s = s + " "
v = a[i] # <---
n = v.upper()
s = s + n
Автор решения: Alexey Trukhanov
→ Ссылка
- Понижаем регистр всех букв (это на тот случай если ввод будет содержать и заглавные буквы, можно не делать, если гарантировано, что ввод будет только строчный) -
.lower - Разбиваем строку на список слов -
.split - В каждом слове поднимаем первую букву -
.upper - Обратно собираем список слов в строку -
.join
a = input("Введите строку-предложение на английском языке: ")
s = " ".join([s[0].upper() + s[1:] for s in a.lower().split()])
print(s)
Но если очень хочется перебрать все буквы, можно, например, так:
a = input("Введите строку-предложение на английском языке: ")
s = a[0].upper()
f = False
for i in range(1, len(a)):
if f:
s = s + a[i].upper()
f = False
else:
s = s + a[i]
if a[i] == " ":
f = True
print(s)
Автор решения: Алексей Р
→ Ссылка
С перебором символов немного покороче и без индексов:
a = 'moTHeR washed RamA ' # input("Введите строку-предложение на английском языке: ")
out, pred = '', ' '
for c in a:
out += c.upper() if pred == ' ' else c.lower()
pred = c
print(out)
Mother Washed Rama