Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import ceil
- h=[]
- a=[]
- 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}
- def zzzz(kk,t,z):#убирает все лишнии символы
- tt=[]
- kkk=[]
- for j in list(t):
- if j in S:
- tt+=j
- for i in list(kk):
- if i in S:
- kkk+=i
- zzzz1(kkk,tt,z)
- def zzzz1(kkk,tt,z):#добавления точек в текст и узнаем(длину текста/длину ключа)
- while True:
- if len(tt)%len(kkk)!=0:
- tt+='.'
- continue
- else:
- break
- zz=len(tt)/len(kkk)
- if z==1:
- x1(kkk,tt,zz,z)
- elif z==2:
- x2(kkk,tt,zz,z)
- def x1(kkk,tt,zz,z):#шифрует текст но не под ключ
- for j in range(0,len(kkk)):
- H=''
- for i in range(j,len(tt),len(kkk)):
- H+=tt[i]
- h.append(H)
- xx(kkk,tt,zz,z)
- def x2(kkk,tt,zz,z):#разбивает текст на части
- ff = ceil(len(tt)/len(kkk))
- for k in range(len(kkk)):
- a.append(tt[ff*k:ff*(k+1)])
- xx(kkk,tt,zz,z)
- def xx(kkk,tt,zz,z):#находит номера букв ключа
- hh=[]
- g='абвгдеёжзийклмнопрстуфхцчшщъыьэюя.'
- for i in list(kkk):
- hh.append(g.index(i)+1)
- if z==1:
- xx2(hh,zz)
- elif z==2:
- xx3(hh,zz)
- def xx2(hh,zz):#берет текст, который не под ключ,шифрует под ключ и выводит
- q=[]
- f=max(hh)+1
- for i in hh:
- q.append(hh.index(min(hh)))
- hh[hh.index(min(hh))]=f
- zp=''
- for i in q:
- zp+=(h[i])
- print(zp)
- h.clear()
- def xx3(hh,zz):#берет текст, который не под ключ,дешифрует ключем и выводит
- q=[]
- pp=[]
- f=max(hh)+1
- for i in hh:
- q.append(hh.index(min(hh)))
- hh[hh.index(min(hh))]=f
- d=dict.fromkeys(q)
- for i in range(0,len(a)):
- d[i]=a[i]
- for x,y in d.items():
- pp.append(y)
- print(a)#убрать
- a.clear()
- xx4(pp,q,zz)
- def xx4(pp,q,zz):
- fff=''
- for i in range(0,len(pp)):
- for j in range(0,len(pp[0])):
- fff+=pp[i][j]
- print(fff)#убрать
- #===============================
- for i in range(0,len(q)-1):
- for j in range(i,len(fff),len(q)-1):
- print(fff[j],end='')
- #===============================
- def Zq(z):#ввод данных,меняет заглавные буквы(А->а и т.д.,убирает повторы в ключе)
- tt=input('Введите текст(на русском): ')
- kkk=input('Введите ключ: ')
- t=tt.lower()
- k=kkk.lower()
- kk=''
- for i in k:
- if i not in kk:
- kk+=i
- zzzz(kk,t,z)
- while True:
- z=int(input('''
- 1-зашифровать
- 2-дешифровать
- 0-выход
- '''))
- if z==1:
- Zq(z)
- continue
- elif z==2:
- Zq(z)
- continue
- elif z==0:
- break
- else:
- print('Неверный пункт меню!')
- continue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement