Короткий разбор поведения кода со строками в Python

Короткий разбор поведения кода со строками в Python

@python_quiz

Разберем этот квиз

Код:

python

Что здесь происходит — по шагам:

  • text.strip() — удаляет пробелы в начале и в конце. Строка становится: "one,,two, ,three".
  • .split(',') — разделяет по запятым, результат:

['one', '', 'two', ' ', 'three']
(обратите внимание: между двумя запятыми пустая строка, а один из элементов — строка из одного пробела).

  • Генератор p for p in parts if p.strip() — оставляет только те элементы, у которых p.strip() не пустая строка. Это отбрасывает пустые элементы и элементы, состоящие только из пробелов.

Останутся: ['one', 'two', 'three'].

  • '-'.join(...) — склеивает элементы дефисами: "one-two-three".

Демонстрация промежуточных значений:

python

Анализ возможных выводов (почему некоторые варианты неправильны)

  • Вариант с двойными дефисами (например, "one--two...") предполагает, что пустые элементы остаются и при join создают пустой участок между дефисами. Но здесь пустые/пробельные элементы отфильтрованы условием if p.strip(), поэтому двойных дефисов не будет.
  • Вариант, где перед "three" видна пробельная часть (" -three"), предполагает, что пробел в элементе ' ' не был отброшен или не был очищен. Однако проверка p.strip() отбрасывает элементы, состоящие только из пробелов.
  • Вариант с исходной строкой без изменений отражает ситуацию, когда strip/split/join вообще не применялись — не соответствует фактическим вызовам в коде.

Вывод

  • В результате выполнения кода будет напечатана строка:
text

Полезный паттерн

  • Такой приём — strip -> split -> фильтрация пустых/пробельных элементов -> join — часто используется для аккуратной нормализации списка значений, разделённых разделителем, особенно когда нужно удалить лишние запятые, пустые поля и пробелы.

Report Page