Заменить в самом длинном слове строки определенные буквы (Python)

Тема: 
Строки

Допустим, дана строка слов, разделенных пробелами. Необходимо найти в ней самое длинное слово и заменить в нем буквы 'a' на буквы 'b'.

Сразу следует оговорить, что в отличие, скажем от Pascal, в Python строки неизменяемы. Т.е. в Питоне изменить символы в строке в принципе нельзя. Поэтому есть только один выход: сформировать новую измененую строку, или просто заменять определенные символы при выводе их на экран. Выберем первый путь.

Сформировать новую строку также можно двумя способами (как минимум):

  • преобразовать исходную в список, выполнить в нем замену, а затем элементы списка соединить в новую строку,
  • вырезать из первой строки все символы до самого длинного слова, посимвольно добавить к ней изменяемое длинное слово, досоединить остаток первой строки.

Логически первый способ проще.

Сам алгоритм поиска самого длинного слова выгляд так:

  1. Если очередной символ не пробел, то увеличиваем счетчик букв слова.
  2. Если все же пробел, то проверяем не самое ли это длинное на данный момент слов. Если это так, то запоминаем длину этого слова (max_w) и индекс начала слова (id_w).
  3. Поскольку последнее слово могло быть не проверено в цикле, то делаем еще одну проверку длины слова за пределами цикла.

При замене букв символы слова перебираются, и если встретиться "нужная" буква, то вместо нее записывается другая.

s = input()
s = list(s) # преобразуем в список
l = len(s)
max_w = 0
id_w = 0
count = 0
i = 0
while i < l:
	if s[i] != ' ':
		count += 1
	else:
		if count > max_w:
			max_w = count
			id_w = i - count
		count = 0
	i += 1
 
if count > max_w: # проверяем последнее слово
	max_w = count
	id_w = i - count
 
id_w_end = id_w + max_w
while id_w < id_w_end:
	if s[id_w] == 'a':
		s[id_w] = 'b'
	id_w += 1
 
s1 = ''
for i in s:
	s1 += i	
print(s1)

Второй способ - через срезы. Здесь не надо в начале программы преобразовывать строку к списку.

# часть кода - только замена символов
s1 = s[0:id_w]
id_w_end = id_w + max_w
while id_w < id_w_end:
	if s[id_w] == 'a':
		s1 += 'b'
	else:
		s1 += s[id_w]
	id_w += 1
 
s1 += s[id_w:]
 
print(s1)

Пример выполнения кода:

very many variants and variables
very many variants and vbribbles