Python

Сортировка строки по словам

Как можно в Python перемешать (рандомно) слова в введенной строке. Именно слова (набор символов, разделенных пробелом), а не буквы во всей строке.
Возьми sample из модуля random:
 from random import sample
ws = input().split()
print(' '.join(sample(ws, len(ws))))

Функция sample берёт указанное количество случайно выбранных элементов из переданной последовательности. Указываем длину последовательности - получаем все её элементы в случайном порядке. Исходная последовательность остаётся нетронутой. Возвращается новый список.

Есть ещё функция shuffle, но её не рекомендую, если надо сохранить исходный список, так как она именно его и меняет. Вообще, модификация in-place - устаревший подход, который имеет смысл использовать только как меру микрооптимизации применительно к локальным структурам часто исполняемых функций (без вытаскивания побочного эффекта наружу). Если нет серьёзных причин мутировать исходное значение, всегда лучше создать новое.
Владимир Бухтояров
Владимир Бухтояров
54 053
Лучший ответ
 import random
s = input() # вводим строку
t = s.split() # превращаем строку в массив слов
random.shuffle(t) # перемешиваем массив в случайном порядке
print(*t) # выводим массив в виде слов, разделённых пробелами
Если нужно не вывести, а получить строку из массива, то:
 s = ' '.join(t) 
Для этого можно использовать модуль random и его функцию shuffle(). Вот пример кода:
 import random 

def shuffle_words(s):
words = s.split(' ') # разбиваем строку на слова
random.shuffle(words) # перемешиваем слова
return ' '.join(words) # собираем слова обратно в строку

s = "Это пример строки, которую нужно перемешать"
print(shuffle_words(s))
В этом коде мы разбиваем входную строку на слова с помощью метода split(), затем перемешиваем полученный список слов с помощью функции shuffle(), и затем собираем слова обратно в строку с помощью метода join().
Обратите внимание, что этот код будет работать только для строк, в которых слова разделены одним пробелом. Если между словами может быть несколько пробелов или другие символы (например, запятые), то потребуется более сложная логика разбиения строки на слова.
Павел Паньков
Павел Паньков
25 860
from random import shuffle
from random import shuffle
s = 'Как можно в Python перемешать (рандомно) слова в введенной строке'.split(' ')
shuffle(s)
print(' '.join(s))

Но какое к этому имеет отношение сортировка?
Денис Коскин
Денис Коскин
5 840
чтобы разделить сточку по словам надо написать example_string.split(sep = ' ')
Emil Aqayev
Emil Aqayev
1 203