Рейтинг:  4 / 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)   #Выведется в строке отсортированные в порядке возрастания количества символов слова из введённого пользователем текста

Успехов в учёбе!