1

Помогите перемешать буквы в словах текст в Этом коде ничего не происходит

from nltk.tokenize import word_tokenize
import random
a = "some text"
a1 = word_tokenize(a)
for i in a1:
    random.shuffle(i.split())

print(' '.join(a1))
  • 2
    Ну логично. Ты же перемешиваемый массив вообще не используешь. – Qwertiy Dec 28 '17 at 19:23

3 Answers3

6
import random

text = "some text"
words = text.split()
for i, word in enumerate(map(list, words)):
    random.shuffle(word)
    words[i] = ''.join(word)

print(*words)  # -> eosm txet

Строки неизменяемы в Питоне, поэтому чтобы перемешать буквы в словах текста, каждое слово преобразуются в список символов, список перемешивается, затем объединённые символы назад в список слов присваиваются.

В общем случае, слова на буквы можно не только посимвольно (на отдельные Unicode code points) разбивать. См. Как разбить строку на отдельные символы?

jfs
  • 52,361
1

Могу предложить вот такой вариант:

import random

slovo = 'Привет' slovo_list = list(slovo) abrakadabra = random.sample(slovo_list, len(slovo_list))

print(abrakadabra)

Jack_oS
  • 12,544
  • 7
  • 19
  • 48
0

Более простой способ:

# Программа, которая меняет местами буквы в слове.
# Импортирую модуль random
import random

Запрашиваю слово у пользователя.

слово = input("Введите слово, в котором вы хотите поменять буквы местами:\n")

Преобразую введённое слово из неизменяемого строкового типа (str)

в изменяемый тип список (list) при помощи функции list()

слово = list(слово)

Перемешиваю элементы списка при помощи метода.shuffle

random.shuffle(слово)

Создаю переменную строкового типа, в которую будет записываться слово

с перемешанными буквами.

перемешанное_слово = ""

При помощи цикла for добавляю последовательно буквы

в созданную пустую переменную (перемешанное_слово).

for буква in слово: перемешанное_слово += буква

Вывожу результат на экран.

print(перемешанное_слово)

insolor
  • 49,104