Python задача "Большие буквы"
Условия задачи, перевести первую букву каждого слова в верхний регистр
Суть вопроса в том, что при пошаговом воспроизведении кода, ошибок не наблюдается до момента replace на моменте lips вместо Lips возвращает lIps. В любых других случаях отрабатывает правильно. Вопрос, кто может объяснить почему реплейсится не правильное значение?
s = 'i wanna taste you but your lips are venomous poison'
def capitalize(z):
t = z.split()
print(t)
for y in t:
g = y[0].upper() + y[1:]
z = z.replace(y, g)
return z
print(capitalize(s))
Ответы (3 шт):
У вас на первой итерации все i заменяются на I, а не только первое слово. Делайте так:
s = 'i wanna taste you but your lips are venomous poison'
def capitalize(z):
t = z.split()
for i in range(len(t)):
g = t[i][0].upper() + t[i][1:]
t[i] = g
return ' '.join(t)
print(capitalize(s))
Или ещё проще:
s = 'i wanna taste you but your lips are venomous poison'
print(s.title())
У метода replace, есть ещё одно значение помимо заменяемого слова и нового слова. Это количество заменяемых слов string.replace(old, new[, maxcount]).
В вашем примере оно бесконечное, его необходимо заменить на одно: (word, g, 1)
Метод capitalize() уже существует у строк. Можно его использовать
def capitalize_first(z):
result = [i.capitalize() for i in a.split()]
return " ".join(result)
Вывод
>>> a = 'i wanna taste you, but your lips. are venomous poison'
>>> capitalize_first(a)
'I Wanna Taste You, But Your Lips. Are Venomous Poison'