Найти - Пользователи
Полная версия: Не пойму, что не так.
Начало » Python для новичков » Не пойму, что не так.
1
DamMercul
Придумал модификацию шифра одинарной перестановки, мешая алфавит.
Вот что получилось:
 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. Не помогает. Где-то утечка. В чем может быть проблема?
vic57
так и должно быть
 >>> l = [1,2,3,4]
>>> l[0],l[1] = l[1],l[0]
>>> l
[2, 1, 3, 4]
>>> l = [1,2,3,4]
>>> def f(lst):
	out = []
	for i in(2,3,0,1):
		out.append(l[i])
	return out
>>> f(l)
[3, 4, 1, 2]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB