Как убрать лишние пробелы в реализации метода split() с помощью цикла?
Дана строка:
sentence = 'My favourite tutor in academy'
мой код:
sent_list = []
word = ''
for i in range(len(sentence)):
word += sentence[i]
if sentence[i] == ' ' or i == len(sentence) - 1:
sent_list.append(word[:i])
word = ''
print(sent_list)
При распечатке списка sent_list все слова кроме крайних получаются с лишним пробелом
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Починить ваш код можно, если заменить:
word += sentence[i]
Таким тернарным if, не дающим добавлять в word пробел:
word += sentence[i] if sentence[i] != ' ' else ''
Вывод:
['My', 'favourite', 'tutor', 'in', 'academy']
Можно и обычный if сделать:
if sentence[i] != ' ':
word += sentence[i]
Но в этом случае будет подряд повторяться похожий if в коде, что не очень хорошо будет выглядеть.
P.S. Тернарный оператор word += sentence[i] if sentence[i] != ' ' else '' является "синтаксическим сахаром" для следующей конструкции:
if sentence[i] != ' '
word += sentence[i]
else:
word += ''
В данном примере в нём нет особого смысла (блок else тут ничего фактически не делает), но часто тернарный оператор бывает удобен и знать его нужно.