Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 5
1

Нужно понять синтаксис кода написанного на Python

26.11.2017, 16:51. Просмотров 360. Ответов 3
Метки нет (Все метки)

Привет всем!
У меня тут задачка: дан шифротекст (зашифрованный шифром Виженера) и переведенный в 16ую систему счисления.
Есть программа написанная на Python, которая расшифровывает текст (переводит текст в символы ASCII, находит длину ключа, расшифровывает текст с помощью этого ключа и выводит на экран).

Я в Питоне не разбираюсь вообще, хочу перевести данный код в С++ и прошу помочь комментариями к коду (что делает конкретные функции, строки, и т.д.). Буду очень признателен помощи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2017, 16:51
Ответы с готовыми решениями:

Почему синтаксис Python 2.* и Python 3.* так отличается?
Привет! Решил на досуге заняться изучением Python'a. Читаю книгу по второму питону, а пользуюсь...

Нужно сделать форму для кода Python
Вот, есть код Python и для него нужно сделать форму с кнопками, очень нужна помощь. # -*- coding:...

Исполнение кода, написанного в текстовом файле (динамическая компиляция кода)
к примеру есть у меня форма а на ней кнопка, можно ли присваивать код кнопке с текстового файла? ...

Перенос веб-сайта, написанного в ASP.net на язык Python
привет; хотел спросить, реально ли перенести веб-сайт (лабораторная раб. по ASP.NET - цель...

3
1269 / 886 / 479
Регистрация: 05.12.2013
Сообщений: 2,859
26.11.2017, 17:48 2
и где код?
0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 5
26.11.2017, 17:56  [ТС] 3
Спешил и забыл прикрепить...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
T='d8397c6049d9da60db0483a4c376796143dd8921d40cd491ec252a644dc19f21dd01c09bfc386d2940c5956a9505db93fc2263674b8a8d68c1088396e024636659d9da75cc10ca9ef2766b67488a9764d40eca9ef23a6f7a5f8a956fd0138391fb322a7349d895729506cf89fc386d294dc9886ec6138384fd332a7a4fd89f64db4e83a4fd33732941cb91649508c293fe3f646e0cc6956ede40cf99fe332a7a43c79f75dd09cd97b5226268588a836ec040cb91e3332a7d438a98649513d680f0242a7a41cb88759514ccd0f9336b7b4284da55dd05dad0f837616c0cc29b62de09cd97b53a6566478a9668de05839df431636a02'.decode("hex")
  
# Vypisyvaem veroyatnost' poyavleniya bukv angliyskogo alfavita
ABC = {
'a': 0.08167,
'b': 0.01492,
'c': 0.02782,
'd': 0.04253,
'e': 0.12702,
'f': 0.02228,
'g': 0.02015,
'h': 0.06094,
'i': 0.06966,
'j': 0.00153,
'k': 0.00772,
'l': 0.04025,
'm': 0.02406,
'n': 0.06749,
'o': 0.07507,
'p': 0.01929,
'q': 0.00095,
'r': 0.05987,
's': 0.06327,
't': 0.09056,
'u': 0.02758,
'v': 0.00978,
'w': 0.02360,
'x': 0.00150,
'y': 0.01974,
'z': 0.00074,
' ': 0.15
}
 
 
def count_elements (T): # Vvodim funktsiyu scheta elementov v massive
  e={}
  for i in T:
    if i not in e:
      e[i]=1.0
    else:
      e[i]=e[i]+1.0
  return e
  
def symbols_freq (T): # Vvodim funktsiyu scheta chastoty vstrechaemosti bukv
  counts=count_elements (T)
  for i in counts:
    counts [i]=counts [i]/len(T)
  return counts
 
P={}
N=5
while N<15:
  t=T[::N] # Postroenie sreza zashifrovannoy funktsii
  p=0.0 
  X=symbols_freq (t)
  for i in X:
    p+=(X[i]-1.0/27.0)**2 # Veroyatnost' poyavleniya simvola v stroke
    P[N]=p
  N=N+1
 
# Vybiraem maksimal'nuyu veroyatnost' i nakhodim dlinu klyucha
max=0
for i in P:
  if P[i]>max:
    max=P[i]
    K_len=i 
 
def decod(T,K): # Vvodim funktsiyu rasshifrovki
  d=''
  n=0
  for y in T:
    d=d+chr(ord(y)^ord(K[n]))
    n+=1
    if n >= len(K):
      n=0
  return d
  
# Nakhodim klyuch
K='' 
for n in range (K_len):
  A={} 
  t=T[n::K_len] 
  for i in range(256):
    B=chr(i)
    text=decod(t,B) # Rasshifrovyvaem srez
    Ver=symbols_freq (text) 
    m=0.0
    M=1.0
    for j in Ver:
      if j in ABC:
        m += abs(Ver[j]-ABC[j])
      else:
        m += abs(Ver[j])
    A[B]=m
  for l in A:
    if A[l]<M:
      M=A[l]
      key=l
  K += key
  
# Rasshifrovyvaem tekst
Text=decod(T,K)
print('\n Text: \n')
print (Text)
print('\n Key length: \n')
print (K_len)
0
1269 / 886 / 479
Регистрация: 05.12.2013
Сообщений: 2,859
26.11.2017, 18:11 4
а что именно не понятно? Тут уже есть комментарии и все довольно просто
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2017, 18:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Средства обратной разработки: из ASM кода нужно понять, по какой формуле производится расчет
Здравствуйте! Помогите разобраться с заданием. Дана программа, в ней есть функция f с...

Оценка написанного кода
Здравствуйте, уважаемые форумчане! Пишу свой медиаплеер на C# Windows Forms с нуля. Вот уже 700...

Выполнения кода на C# написанного в TextBox
В общем. Начну с примера что хочу сделать Пример: Написал я допустим в textBox1 код -...

Изменение кода написанного макрорекордером
Записал макрорекордером автоматический ввод формул в определённые диапазоны ячеек.Как можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.