Вот что получилось:
from random import randint from string import printable as letters from pickle import load, dump letters = list(letters[:10] + "".join([chr(x) for x in range(ord("а"), ord("я") + 1)]) + \ "".join([chr(x) for x in range(ord("А"), ord("Я") + 1)]) + \ letters[10:(len(letters) - 3)]) + [" "] def mix_massive(massive): """ I don't want to use shuffle method from random module, because I'd like to know, how does it work. """ assert massive.__class__ == list, "Param must be a massive. Because of it, its name is \"massive\"" # checking massive type for x in range(0, randint(50, 100)): f, s = randint(0, len(massive) - 1), randint(0, len(massive) - 1) f1 = massive[f] massive[f] = massive[s]; massive[s] = f1 return massive def alphabet_encrypt(text): u_abs = letters print(u_abs == letters, "Equaling before mixing") e_abs = mix_massive(letters) print(u_abs == letters, "Equaling after mixing") print(e_abs == u_abs, "Does encrypted alphabet equal to not encrypted") print(e_abs == letters, "Does encrypted alphabet equal to letters") alphabet_encrypt('asd')
Проблема в том, что в alphabet_encrypt после смешиваня алфавита, меняется и u-abs и просто letters на зашифрованный алфавит. Я уже и в самой функции перемешивания присвваивал к massive_to_use переменной значения massive. Не помогает. Где-то утечка. В чем может быть проблема?