Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 1, 2018 17:28:15

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 325
Репутация: +  13  -
Профиль   Отправить e-mail  

Не пойму, что не так.

Придумал модификацию шифра одинарной перестановки, мешая алфавит.
Вот что получилось:

 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. Не помогает. Где-то утечка. В чем может быть проблема?



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Офлайн

#2 Янв. 1, 2018 17:56:17

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Не пойму, что не так.

так и должно быть

 >>> 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]

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version