Advertisement
powerman50061

Untitled

Dec 13th, 2019
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.34 KB | None | 0 0
  1. from math import ceil
  2. h=[]
  3. a=[]
  4. S={'.':35,'а':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}
  5. def zzzz(kk,t,z):#убирает все лишнии символы
  6.     tt=[]
  7.     kkk=[]
  8.     for j in list(t):
  9.         if j in S:
  10.             tt+=j
  11.     for i in list(kk):
  12.         if i in S:
  13.             kkk+=i
  14.     zzzz1(kkk,tt,z)
  15. def zzzz1(kkk,tt,z):#добавления точек в текст и узнаем(длину текста/длину ключа)
  16.     while True:
  17.         if len(tt)%len(kkk)!=0:
  18.             tt+='.'
  19.             continue
  20.         else:
  21.             break
  22.     zz=len(tt)/len(kkk)
  23.     if z==1:
  24.         x1(kkk,tt,zz,z)
  25.     elif z==2:
  26.         x2(kkk,tt,zz,z)
  27. def x1(kkk,tt,zz,z):#шифрует текст но не под ключ
  28.     for j in range(0,len(kkk)):
  29.         H=''
  30.         for i in range(j,len(tt),len(kkk)):
  31.             H+=tt[i]
  32.         h.append(H)
  33.     xx(kkk,tt,zz,z)
  34. def x2(kkk,tt,zz,z):#разбивает текст на части
  35.     ff = ceil(len(tt)/len(kkk))
  36.     for k in range(len(kkk)):
  37.         a.append(tt[ff*k:ff*(k+1)])
  38.     xx(kkk,tt,zz,z)
  39. def xx(kkk,tt,zz,z):#находит номера букв ключа
  40.     hh=[]
  41.     g='абвгдеёжзийклмнопрстуфхцчшщъыьэюя.'
  42.     for i in list(kkk):
  43.         hh.append(g.index(i)+1)
  44.     if z==1:
  45.         xx2(hh,zz)
  46.     elif z==2:
  47.         xx3(hh,zz)
  48. def xx2(hh,zz):#берет текст, который не под ключ,шифрует под ключ и выводит
  49.     q=[]
  50.     f=max(hh)+1
  51.     for i in hh:
  52.         q.append(hh.index(min(hh)))
  53.         hh[hh.index(min(hh))]=f
  54.     zp=''
  55.     for i in q:
  56.         zp+=(h[i])
  57.     print(zp)
  58.     h.clear()
  59. def xx3(hh,zz):#берет текст, который не под ключ,дешифрует ключем и выводит
  60.     q=[]
  61.     pp=[]
  62.     f=max(hh)+1
  63.     for i in hh:
  64.         q.append(hh.index(min(hh)))
  65.         hh[hh.index(min(hh))]=f
  66.     d=dict.fromkeys(q)
  67.     for i in range(0,len(a)):
  68.         d[i]=a[i]
  69.     for x,y in d.items():
  70.         pp.append(y)
  71.     print(a)#убрать
  72.     a.clear()
  73.     xx4(pp,q,zz)
  74. def xx4(pp,q,zz):
  75.     fff=''
  76.     for i in range(0,len(pp)):
  77.         for j in range(0,len(pp[0])):
  78.             fff+=pp[i][j]
  79.  
  80.     print(fff)#убрать
  81.  
  82. #===============================    
  83.     for i in range(0,len(q)-1):
  84.         for j in range(i,len(fff),len(q)-1):
  85.             print(fff[j],end='')
  86. #===============================
  87.            
  88. def Zq(z):#ввод данных,меняет заглавные буквы(А->а и т.д.,убирает повторы в ключе)
  89.     tt=input('Введите текст(на русском): ')
  90.     kkk=input('Введите ключ: ')
  91.     t=tt.lower()
  92.     k=kkk.lower()
  93.     kk=''
  94.     for i in k:
  95.         if i not in kk:
  96.             kk+=i
  97.     zzzz(kk,t,z)
  98. while True:
  99.     z=int(input('''
  100. 1-зашифровать
  101. 2-дешифровать
  102. 0-выход
  103. '''))
  104.     if z==1:
  105.         Zq(z)
  106.         continue
  107.     elif z==2:
  108.         Zq(z)
  109.         continue
  110.     elif z==0:
  111.         break
  112.     else:
  113.         print('Неверный пункт меню!')
  114.         continue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement