Рейтинг користувача: 3 / 5

Активна зіркаАктивна зіркаАктивна зіркаНеактивна зіркаНеактивна зірка
 

Завдання: користувач повинен ввести з клавіатури довільний текст, який повинен спочатку відсортуватися за алфавітом (кожне слово за алфавітом), а потім кожне слово має бути відсортовано за довжиною. Результати повинні бути виведені на екран.

Версія Python 3.5

Коли читаєш документацію або дивишся уроки з Пітону, все дуже ясно і просто. А ось коли приходить час для практичних завдань, виявляється все не так просто, як здавалося раніше. З цієї задачі були спроби знайти просте і зрозуміле рішення в гуглі за запитами "сортування рядків python", "сортування кортежу python" (були припущення перевести слова в кортеж), "слова за алфавітом в тексті python", "впорядкувати текст за алфавітом python", "сортування за алфавітом python", "перевести рядок в список" і навіть "перевести список в рядок". В результаті моїх мук і допомоги з боку були реалізовані прості рішення даної задачі.

Виведення на екран введеного тексту.

Для початку визначимо змінну, яка буде записувати і виводити потім введений користувачем довільний текст. Потім виведемо на екран значення змінної за допомогою оператора виведення print. Тут все просто.

text=str(input("Enter text: "))
print(text)

Сортування символів в списку за алфавітом.

За допомогою функції sorted() відсортуємо за алфавітом але не кожне слово, а кожен символ. В задачі цього не було, але про всяк випадок залишу і цей варіант тут. Щоб функція працювала, створюємо нову змінну, в яку складаємо всі символи окремо і потім виводимо їх за алфавітом.

newList = sorted(text)
print(newList) #Выведется в списке отсортированный по алфавиту каждый символ в тексте

Сортування списку з слів в алфавітному порядку.

Перетворення рядка в список слів можна виконати за допомогою функції split() за формулою (синтаксису): S(або будь-яка інша змінна).split (символ). Тобто, відбувається по суті розбиття рядка за певним розмежувачем, в даному випадку — за пробілом. Правда, за таким кодом відсортуються слова за алфавітом саме в списку (з повним синтаксисом списків: квадратними дужками і виведенням кожного слова в лапки). Трохи не те знову, що нам хотілося б отримати в рішенні завдання.

n=sorted(text.split())
print(n)  # Виведеться в списку відсортовані за алфавітом слова, що були введені користувачем в тексті

Сортування слів в рядку за алфавітом.

А ось код нижче з використанням тієї ж функції split() і циклу шляхом ітерації слів в тексті будуть виведені на екран відсортовані за алфавітом введені користувачем слова тексту. А щоб при ітерації кожне слово не було з нового рядка (як за замовчуванням), додатково введемо змінну e, за допомогою якої слова будуть виведені в один рядок, а не в стовпчик.

w=text.split()
e=""
for r in sorted(w):
    e=e+" " +r
print(e)   # Виведеться в рядку сортування слів з введеного користувачем тексту за алфавітом

Сортування слів по довжині.

Прийшов час впорядкувати слова в тексті по їх довжині. Тут також використовуємо split() для поділу слів в тексті. Тепер потрібно впорядкувати слова по довжині. Для цього потрібно створити анонімну функцію (що містить лише один вираз визначення довжини слова) за допомогою інструкції lambda.

l = text.split()
q=""
for i in sorted(l,key=lambda a: len(a)):
    q = q + " " + i
print(q)   # Виведуться в рядку відсортовані в порядку зростання кількості символів слова з введеного користувачем тексту

Успіхів в навчанні!