Python — перемешать буквы в слове кроме первой и последней

Привет всем! Позавчера наткнулся на интересную задачку, своим решением которой я хочу поделиться сегодня. Звучала она следующим образом: «… напишите консольную утилиту на Python, которая на вход принимает текст, а на выходе даёт такой же текст, только с перемешанными буквами в середине слов. Вот преимр тгакоо преанеешивимя…». Фактически — звучит задача так: «Как перемешать буквы в слове кроме первой и последней» 🙂

Учитывая, что никаких больше условий по задаче на было — я даже не думал о количестве минимальных букв, а так же о знаках препинания (о проверке на знаки препинания мы, кстати, поговорим чуть позднее).

А значит — нам нужно:
1. Получить текст предложения
2. Разбить предложения на слова
3. Выделить первую и последнюю букву в каждом слове
4. Перемешать случайным образом все, что осталось.
Приступим!

Учитывая, что мы будем перемешивать символы случайным образом — сразу подключим библиотеку random, и получим текст предложения. Кроме этого не забудем указать тип данных обработанного предложения — список:

  1. import random #Подключили библиотеку, отвечающую за генерацию случайных чисел
  2. text_fynal = [] #Создали пустой список
  3.  
  4. texts = str(input('Введите предложение: \n >>> ')) #Получили переменную с текстом предложения (ввел пользователь)
  5. texts = texts.split() #Используем метод split, который возвращает список всех слов в предложении, разделенных пробелами

Итак — к настоящему моменту мы имеем список, состоящий из всех слов в предложении. Теперь с помощью цикла пройдем по каждому слову и обработаем его по нашим требованиям:

  1. for text in texts: #Начинаем цикл обработки каждого слова из списка
  2.     text_list = [] #создаем пустой список (позднее в него загоним все буквы, составляющие то или иное слово)
  3.     for simbol in text: #Начинаем цикл обработки каждой буквы в конкретном слове
  4.         text_list.append(simbol) #Добавляем в список каждую из букв в слове - т.е. получаем список, который составляют все буквы слова
  5.  
  6.     first_simbol = text_list[0] #Вычленяем первую буквы слова
  7.     last_simbol = text_list[len(text_list) - 1] #Вычленяем последнюю букву слова
  8.  
  9.     del text_list[0] #Удаляем в списке, который состоит из букв слова первую букву слова
  10.     del text_list[len(text_list) - 1] #Удаляем в списке, который состоит из букв слова последнюю букву
  11.  
  12.     random.shuffle(text_list) #Перемешиваем все, что осталось в списке из букв слова случайным образом
  13.     text_list = ''.join(text_list) #Формируем переменную, которая состоит из перемешанных букв слова за исключением первой и последних букв
  14.     ok_text = first_simbol + text_list + last_simbol #Формируем переменную, которая состоит из первой буквы слова, перемешанной середины слова и последней буквы
  15.     text_fynal.append(ok_text)

Собственно — под в полном виде доступен ниже:

  1. import random
  2. text_fynal = []
  3.  
  4. texts = str(input('Введите предложение: \n >>> '))
  5. texts = texts.split()
  6.  
  7. for text in texts:
  8.     text_list = []
  9.     for simbol in text:
  10.         text_list.append(simbol)
  11.  
  12.     first_simbol = text_list[0]
  13.     last_simbol = text_list[len(text_list) - 1]
  14.  
  15.     del text_list[0]
  16.     del text_list[len(text_list) - 1]
  17.  
  18.     random.shuffle(text_list)
  19.     text_list = ''.join(text_list)
  20.     ok_text = first_simbol + text_list + last_simbol
  21.     text_fynal.append(ok_text)
  22.  
  23. print(' '.join(text_fynal))

Или — вы можете скачать его на GitHub 🙂
Как всегда — в случае возникновения вопросов — пишите на почту или в Telegram!
Спасибо за внимание!

Python — перемешать буквы в слове кроме первой и последней

Python — перемешать буквы в слове кроме первой и последней