Уведомления

Группа в Telegram: @pythonsu

#1 Март 18, 2015 00:58:11

sedooooooy@gmail.com
Зарегистрирован: 2015-03-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

шифратор текста

Доброго времени суток! Помогите решить проблему. Мне нужно написать шифратор который, шифрует текст методом подстановки, т.е. есть таблица в соответствии с которой одни символы в веденной строке должны заменяться на другие. Через if не предлагать, поскольку, текст может быть произвольной величины.В программировании 2 дня, так что надеюсь на вашу помощь. Начало программы и сама таблица прилагается. Ссылка на похожую тему будет очень кстати
Код Python
data = raw_input(“Vvedite text dlya shifrovaniya:”)
char_list = list(data.upper())
print char_list
code_list = [(“A”,“Z”),(“B”,“ ”),(“C”,“.”),(“D”,“X”),(“E”,“Y”),(“F”,“,”),
(“G”,“!”),(“H”,“S”),(“I”,“T”),(“J”,“:”),(“K”,“;”),(“L”,“Q”),
(“M”,“R”),(“N”,“?”),(“O”,“-”),(“P”,“N”),(“Q”,“O”),(“R”,“V”),
(“S”,“L”),(“T”,“M”),(“U”,“N”),(“V”,“O”),(“W”,“P”),(“X”,“A”),
(“Y”,“B”),(“Z”,“C”),(“ ”,“D”),(“.”,“E”),(“,”,“F”),(“!”,“G”),
(“:”,“H”),(“;”,“I”),(“?”,“J”),(“-”,“K”)]

Отредактировано sedooooooy@gmail.com (Март 18, 2015 01:00:49)

Офлайн

#2 Март 18, 2015 01:17:41

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

шифратор текста

data = raw_input("Vvedite text dlya shifrovaniya:") 
char_list = list(data.upper())
print char_list
code_list = [("A", "Z"), ("B", " "), ("C", "."), ("D", "X"), ("E", "Y"), ("F", ","),
             ("G", "!"), ("H", "S"), ("I", "T"), ("J", ":"), ("K", ";"), ("L", "Q"),
             ("M", "R"), ("N", "?"), ("O", "-"), ("P", "N"), ("Q", "O"), ("R", "V"),
             ("S", "L"), ("T", "M"), ("U", "N"), ("V", "O"), ("W", "P"), ("X", "A"),
             ("Y", "B"), ("Z", "C"), (" ", "D"), (".", "E"), (",", "F"), ("!", "G"),
             (":", "H"), (";", "I"), ("?", "J"), ("-", "K")]
 
code_list = dict(code_list)
print ''.join([code_list[i] for i in char_list])



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Март 18, 2015 01:21:40)

Офлайн

#3 Март 18, 2015 01:26:08

sedooooooy@gmail.com
Зарегистрирован: 2015-03-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

шифратор текста

terabayt
print ''.join([code_list for i in char_list])
Спасибо, только я не понял последнюю строчку, объясните если можно.

Офлайн

#4 Март 18, 2015 01:38:17

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

шифратор текста

последняя строчка аналогична этому

a = []
for i in char_list:
    a.append(code_list[i])
b = ''.join(a)
print b
почитайте о генераторах списков
а метод join объединяет список в строку через разделитель
>>> print ''.join.__doc__
S.join(iterable) -> string
Return a string which is the concatenation of the strings in the
iterable.  The separator between elements is S.
также этот код можно проще переписать
data = raw_input("Vvedite text dlya shifrovaniya:") 
char_list = list(data.upper())
print char_list
code_list = [("A", "Z"), ("B", " "), ("C", "."), ("D", "X"), ("E", "Y"), ("F", ","),
             ("G", "!"), ("H", "S"), ("I", "T"), ("J", ":"), ("K", ";"), ("L", "Q"),
             ("M", "R"), ("N", "?"), ("O", "-"), ("P", "N"), ("Q", "O"), ("R", "V"),
             ("S", "L"), ("T", "M"), ("U", "N"), ("V", "O"), ("W", "P"), ("X", "A"),
             ("Y", "B"), ("Z", "C"), (" ", "D"), (".", "E"), (", ", "F"), ("!", "G"),
             (":", "H"), (";", "I"), ("?", "J"), ("-", "K")]
 
code_list = dict(code_list)
s = ''
for i in char_list:
    s += code_list[i]
print s



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Март 18, 2015 01:42:41)

Офлайн

#5 Март 18, 2015 01:43:52

sedooooooy@gmail.com
Зарегистрирован: 2015-03-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

шифратор текста

Во всем разобрался еще раз спасибо. Тему можно считать закрытой.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version