Привет всем! Позавчера наткнулся на интересную задачку, своим решением которой я хочу поделиться сегодня. Звучала она следующим образом: «… напишите консольную утилиту на 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!
Спасибо за внимание!