Форум сайта python.su
0
Здравствуйте.
В питоне я еще новичок, и решил попрактиковаться, реализовав упрощенный des. Написал код, но при отладке возникла следующая проблема:
def alg (word): perem = bin(int(word,16))[2::] if len(perem) < 8: w = (8-len(perem))*'0' + perem message = w[1]+w[5]+w[2]+w[0]+w[3]+w[7]+w[4]+w[6] L0,R0 = message[0:4], message[4:8] R1 = operator.xor(int(L0,2),int(func(R0,el=0),2))
[code python][/code]
Отредактировано FishHook (Апрель 17, 2013 11:07:11)
Прикреплённый файлы:
des_simple_new.py (3,0 KБ)
Офлайн
0
или как передать со стандартного потока stdout в переменную, т.е. передать принтованное значение в переменную
Офлайн
17
В коде куча ошибок:
1. Вызов main, хотя такой функции нет.
2. Строка 62: Если длина perm не меньше 8, то w не инициализируется.
3. Строка 66: Закрывающая скобка похоже не там.
4. Строка 66: Первый аргумент int, а товй func ожидает строку.
Офлайн
0
agalenНасчет main и w согласен ) а вот в 66-й строке таких проблем не обнаружил …
В коде куча ошибок:1. Вызов main, хотя такой функции нет.2. Строка 62: Если длина perm не меньше 8, то w не инициализируется.3. Строка 66: Закрывающая скобка похоже не там.4. Строка 66: Первый аргумент int, а товй func ожидает строку.
Офлайн
17
Здесь вообще python ругается на синтаксическую ошибку.
File "des_simple_new1.py", line 66
l = operator.xor(int(L1,2),int(func(R1,el=1,2)))
SyntaxError: non-keyword arg after keyword arg
>>> "{0:08b}".format( 45 ) '00101101'
Офлайн
0
спасибо за совет ) прошу прощение за конец кода, он просто напросто даже не доходил до этой части ) el=1 скорее всего ) проблема в том, что как видите у меня стоит print в func
print (left_block, right_block)
print (operator.xor(int(L0,2),int(func(R0,el=0),2)))
print (left_block, right_block)
Офлайн
17
Всё, что выводится в stdout - уходит из программы, оттуда уже не достать.
Почему бы просто не присвоить значение переменной, а уже потом её выводить.
Офлайн