import alfavit
from alfavit import alfa
slovo = [21, 1, 3, 1, 20, 24, 29]
g=0
gg=0
N=33
for i in alfa:
    print(f"Начало. Ключ {gg}", end="\n")
    for i in slovo:
        a=(slovo[g] - (0+gg))%N
        print(alfa[a], end="")
        g=g+1
    print(" ", end="\n")
    print("конец")
    g=0
    gg=gg+1import alfavit
from alfavit import alfa
slovo=input("Введите текст слитно ")
S=int(input("Введите длину ключа (до 32) "))
N=32
g=0
 
for i in slovo:
    c=(slovo[g]+S)%N
    print(c)
    g=g+1text и строка-ключ key, а также список строк, содержащий алфавит языка alpha.# принимает символ открытого текста, его позицию в тексте, строку-ключ и алфавит
# возвращаем символ шифротекста
def viginere_encode(text_char: str, i: int, key: str, alpha: list[str]) -> str:
  if text_char not in alpha:  # незнакомый символ?
    return text_char  # оставляем его как есть
  text_char_code = alpha.index(text_char)  # номер символа открытого текста в алфавите
  key_char = key[i % len(key)]  # символ ключа, соответствующего i-му символу открытого текста 
  key_char_code = alpha.index(key_char)   # номер символа ключа в алфавите
  cypher_char_code = (text_char_code + key_char_code) % len(alpha)  # номер символа шифротекста
  return alpha[cypher_char_code]  # возвращаем символ шифротекстаcipher_text = ''
for i in range(len(text)):
  cipher_text += viginere_encode(text[i], i, key, alpha)alpha = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
text = 'A SMOKE OF MOTHERLAND IS SWEET FOR US AND PLEASANT'
key = 'SECRET'
# принимает символ открытого текста, его позицию в тексте, строку-ключ и алфавит
# возвращаем символ шифротекста
def viginere_encode(text_char: str, i: int, key: str, alpha: list[str]) -> str:
  if text_char not in alpha:  # незнакомый символ?
    return text_char  # оставляем его как есть
  text_char_code = alpha.index(text_char)  # номер символа открытого текста в алфавите
  key_char = key[i % len(key)]  # символ ключа, соответствующего i-му символу открытого текста 
  key_char_code = alpha.index(key_char)   # номер символа ключа в алфавите
  cypher_char_code = (text_char_code + key_char_code) % len(alpha)  # номер символа шифротекста
  return alpha[cypher_char_code]  # возвращаем символ шифротекста
# принимает символ шифротекста, его позицию в тексте, строку-ключ и алфавит
# возвращаем символ открытого текста
def viginere_decode(cipher_char: str, i: int, key: str, alpha: list[str]) -> str:
  if cipher_char not in alpha:  # незнакомый символ?
    return cipher_char  # оставляем его как есть
  cipher_char_code = alpha.index(cipher_char)  # номер символа шифротекста в алфавите
  key_char = key[i % len(key)]  # символ ключа, соответствующего i-му символу шифротекста 
  key_char_code = alpha.index(key_char)   # номер символа ключа в алфавите
  text_char_code = (cipher_char_code + len(alpha) - key_char_code) % len(alpha)  # номер символа открытого текста
  return alpha[text_char_code]  # возвращаем символ открытого текста
cipher_text = ''
for i in range(len(text)):
  cipher_text += viginere_encode(text[i], i, key, alpha)
decoded_text = ''
for i in range(len(cipher_text)):
  decoded_text += viginere_decode(cipher_text[i], i, key, alpha)
print(text)
print(cipher_text)
print(decoded_text)