Добавить в корзинуПозвонить
Найти в Дзене
Практика Python

Решение практической задачи № 5 на Python

Условие: «Принять у пользователя предложение в виде строки. Перевернуть в предложении каждое слово. Все пробелы должны быть сохранены.» Решение № 1. Сначала разделим предложения на слова, используя метод .split(). Метод .split() служит для разбиения строки на подстроки с помощью указанного разделителя. Например если: х = ‘asd,zxc,wer’ То х .split (‘,’,3) вернет список , состоящий из трех элементов [‘asd’,’ zxc’,’ wer’] Общий синтаксис str.split (‘symbol’,max) – где symbol – символ-разделитель, max – необязательный параметр максимальное количество элементов. Если параметр symbol не указан, то python будет считать разделителями пробелы, переводы строк, указатели конца строки Теперь у нас есть список, содержащий каждое слово предложения в качестве элемента. Предварительно создаем еще один пустой список - reversed_list, в котором будем хранить перевернутые слова. Используем цикл for, выбираем, каждый элемент списка. Чтобы перевернуть слово – используем срез. Так если: х = “Петя” т

Условие: «Принять у пользователя предложение в виде строки. Перевернуть в предложении каждое слово. Все пробелы должны быть сохранены

Решение № 1.

Сначала разделим предложения на слова, используя метод .split().

Метод .split() служит для разбиения строки на подстроки с помощью указанного разделителя. Например если:

х = ‘asd,zxc,wer’

То х .split (‘,’,3) вернет список , состоящий из трех элементов

[‘asd’,’ zxc’,’ wer’]

Общий синтаксис str.split (‘symbol’,max) – где symbol – символ-разделитель, max – необязательный параметр максимальное количество элементов. Если параметр symbol не указан, то python будет считать разделителями пробелы, переводы строк, указатели конца строки

Теперь у нас есть список, содержащий каждое слово предложения в качестве элемента. Предварительно создаем еще один пустой список - reversed_list, в котором будем хранить перевернутые слова. Используем цикл for, выбираем, каждый элемент списка. Чтобы перевернуть слово – используем срез. Так если:

х = “Петя

то срез х[::-1] вернет - ятеП

Каждый перевернутый элемент записываем в список reversed_list. Затем объединяем все элементы reversed_list в строку методом .join и выводим ответ на экран.

Решение с помощью .split() и .join()Р
Решение с помощью .split() и .join()Р

Заметим, что используя “синтаксический сахар”, тоже самое решение можно было бы выполнить в одну строчку:

Решение № 1 и "синтаксический сахар"
Решение № 1 и "синтаксический сахар"

Решение № 2.

В этом решении мы используем наиболее трудоёмкий способ. Запрашиваем строку у пользователя и конкатенируем к ней пробел. Пробел для нас будет являться признаком конца слова, а пользователь наверняка не введет его при вводе, и мы можем утратить последнее слово предложения.

Далее мы поиндексно в цикле перебираем предложение. Если символ не пробел – добавляем его к текущему слову. Как только мы нашли пробел, записываем слово в список, сразу перевернув его с помощью среза.

По окончанию цикла объединяем наш список в строку и выводим на экран.

Решение с помощью перебора символов
Решение с помощью перебора символов

Решение № 3.

Используем метод .sub() библиотеки регулярных выражений. Метод .sub() имеет синтаксис:

re.sub (find,replace,string) – где find – что нужно найти, replace – на что нужно заменить, string – где искать. Так если:

х = ‘fff.ggg.hhh’

то re.sub (r’.’,’,’,x) вернет

‘fff,ggg,hhh’

Т.е. заменит все точки на запятые в строке х.

В нашем примере в поиске регулярных выражений мы используем ключ \S – “не пробельные символы” и + - “один или больше”. Инвертируем найденное слово с помощью функции lambda:

Решение с помощью регулярных выражений
Решение с помощью регулярных выражений

Pythex.org – очень удобная площадка, для того, чтобы потренироваться в ключах регулярных выражений. Подозреваю, что в данном примере может быть многое не понятно. В ближайшее время планируется цикл статей, посвященный применению регулярных выражений на практике.

У меня всё. Если у Вас, уважаемый читатель, есть более элегантные способы решения этой задачи – прошу поделиться ими!

Конструктивная критика приветствуется.

Эта статья была полезной? Поставьте лайк и поделитесь с друзьями в социальных сетях!

Оставьте отзывы и замечания!

База знаний

Методы: .split(),.join()

Типы данных: list (списки)

Понятия: Срезы, Регулярные выражения

Модули: re ( sub())

Задача для закрепления: «Принять у пользователя предложение в виде строки. Перевернуть в предложении каждое слово. Перевернуть также и порядок слов. Первое слово должно стать последним. Все пробелы должны быть сохранены»

Предыдущая задача:

Решение практической задачи № 4

Более полное описание подходов, методов и функций, применяемых в этом решении:

Основы работы со строками

Методы строк. Часть 1

Основы работы со списками

Методы списков. Часть 1

Основы работы с числами

Числовые функции.Часть 1