Привет всем! Позавчера наткнулся на интересную задачку, своим решением которой я хочу поделиться сегодня. Звучала она следующим образом: «… напишите консольную утилиту на Python, которая на вход принимает текст, а на выходе даёт такой же текст, только с перемешанными буквами в середине слов. Вот преимр тгакоо преанеешивимя…». Фактически — звучит задача так: «Как перемешать буквы в слове кроме первой и последней» 🙂
Учитывая, что никаких больше условий по задаче на было — я даже не думал о количестве минимальных букв, а так же о знаках препинания (о проверке на знаки препинания мы, кстати, поговорим чуть позднее).
А значит — нам нужно:
1. Получить текст предложения
2. Разбить предложения на слова
3. Выделить первую и последнюю букву в каждом слове
4. Перемешать случайным образом все, что осталось.
Приступим!
Учитывая, что мы будем перемешивать символы случайным образом — сразу подключим библиотеку random, и получим текст предложения. Кроме этого не забудем указать тип данных обработанного предложения — список:
-
import random #Подключили библиотеку, отвечающую за генерацию случайных чисел
-
text_fynal = [] #Создали пустой список
-
-
texts = str(input('Введите предложение: \n >>> ')) #Получили переменную с текстом предложения (ввел пользователь)
-
texts = texts.split() #Используем метод split, который возвращает список всех слов в предложении, разделенных пробелами
Итак — к настоящему моменту мы имеем список, состоящий из всех слов в предложении. Теперь с помощью цикла пройдем по каждому слову и обработаем его по нашим требованиям:
-
for text in texts: #Начинаем цикл обработки каждого слова из списка
-
text_list = [] #создаем пустой список (позднее в него загоним все буквы, составляющие то или иное слово)
-
for simbol in text: #Начинаем цикл обработки каждой буквы в конкретном слове
-
text_list.append(simbol) #Добавляем в список каждую из букв в слове - т.е. получаем список, который составляют все буквы слова
-
-
first_simbol = text_list[0] #Вычленяем первую буквы слова
-
last_simbol = text_list[len(text_list) - 1] #Вычленяем последнюю букву слова
-
-
del text_list[0] #Удаляем в списке, который состоит из букв слова первую букву слова
-
del text_list[len(text_list) - 1] #Удаляем в списке, который состоит из букв слова последнюю букву
-
-
random.shuffle(text_list) #Перемешиваем все, что осталось в списке из букв слова случайным образом
-
text_list = ''.join(text_list) #Формируем переменную, которая состоит из перемешанных букв слова за исключением первой и последних букв
-
ok_text = first_simbol + text_list + last_simbol #Формируем переменную, которая состоит из первой буквы слова, перемешанной середины слова и последней буквы
-
text_fynal.append(ok_text)
Собственно — под в полном виде доступен ниже:
-
import random
-
text_fynal = []
-
-
texts = str(input('Введите предложение: \n >>> '))
-
texts = texts.split()
-
-
for text in texts:
-
text_list = []
-
for simbol in text:
-
text_list.append(simbol)
-
-
first_simbol = text_list[0]
-
last_simbol = text_list[len(text_list) - 1]
-
-
del text_list[0]
-
del text_list[len(text_list) - 1]
-
-
random.shuffle(text_list)
-
text_list = ''.join(text_list)
-
ok_text = first_simbol + text_list + last_simbol
-
text_fynal.append(ok_text)
-
-
print(' '.join(text_fynal))
Или — вы можете скачать его на GitHub 🙂
Как всегда — в случае возникновения вопросов — пишите на почту или в Telegram!
Спасибо за внимание!