Скремблирование строковых букв в списке? - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь понять, как шифровать буквы в 1 области массива / списка в Python IDLE.После поиска ответов на этом сайте я наткнулся на код (сейчас не могу его найти), поэтому немного его отредактировал, потому что он работал только с одной строкой в ​​массиве.Это то, что я получил

import random
word1 = input("Enter a phrase / word: ")
str_var = ["sa",word1]
r=list(str_var[1])
random.shuffle(r)
print (''.join (r))

Как видите, мне нужно использовать переменную 'r' в качестве посредника.Это работает, но я чувствую, что это слишком долго.

import random
word1 = input("Enter a phrase / word: ")
str_var = list["sa", word1]
random.shuffle(str_var[1])
print (''.join (str_var[1]))

Как мне вырезать среднего человека?Вот ошибка, которую я получил, если она имеет какое-либо использование:

Traceback (most recent call last):
  File "C:/Users/HP/Downloads/Delete Me.py", line 3, in <module>
    str_var = list["sa", word1]
TypeError: 'type' object is not subscriptable

1 Ответ

0 голосов
/ 24 ноября 2018

Во-первых, вы получаете сообщение об ошибке, потому что вы использовали крайне неправильный синтаксис для создания списка:

str_var = list["sa", word1]

list - это функция и ее аргументыдолжно быть между (..), а не [..].Но так как вы все равно строите список на этой самой строке, вам не нужно явно вызывать list.

Тогда ваш код все еще не работает.random.shuffle ожидает собственный список, а не строку - это то, чем word1 является в этот момент.Так вот что я сделал:

random.shuffle(list(str_var[1]))

и действительно работает (не выдает ошибку).Но исходное значение str_var не изменилось ... После более пристального взгляда я понял, что list возвращает здесь новый список, который перетасовывается, а затем радостно выбрасывается.Следовательно, аргумент random.shuffle должен быть существующей переменной.Явно создав str_var[1] как список в первую очередь, наконец решил, что:

import random
word1 = 'hello'
str_var = ["sa", list(word1)]
random.shuffle(str_var[1])
print (''.join (str_var[1]))

Результат:

lhloe

Ваш результат может отличаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...