Завдання: користувач повинен ввести з клавіатури довільний текст, який повинен спочатку відсортуватися за алфавітом (кожне слово за алфавітом), а потім кожне слово має бути відсортовано за довжиною. Результати повинні бути виведені на екран.
Версія 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) # Виведуться в рядку відсортовані в порядку зростання кількості символів слова з введеного користувачем тексту
Успіхів в навчанні!