Я делаю это домашнее задание, которое должно выполнять криптографию Twist, но я снова и снова получаю одни и те же ошибки, я знаю только некоторые C и VHL, но мне нужно сделать это на python
почему это происходит?"NameError: имя 'cifradocodigo' не определено"
Я также по какой-то причине не могу правильно исправить текст в ascii, подчеркивание должно (как того требует профессор) отображаться на 0, чтобы не-1 даже я изо всех сил стараюсь это исправить
# Criptografia Twist
def cifra(codigoplano, k): #recebe codigo a ser cifrado e chave
n = len(codigoplano)
for i in range(n):
j=mod(int(k)*i,n)
cifradocodigo[i]= str(mod(int(codigoplano[j])-i,28))
def decifra(cifradocodigo, k): #recebe codigo cifrado e chave
n= len(cifradocodigo)
for i in range(n):
j=mod(int(k)*i,n)
codigoplano[j]=str(mod(int(cifradocodigo[i])+i,28))
def convercaoIntChar (texto): #converte texto para string de numeros
for x in texto:
if x==0:
x="_"
else:
x=chr(x+97)
return texto
def convercaoCharInt (texto): #converte string de numeros em texto
for x in texto:
if x=="_":
x=0
else:
x=ord(x)-97
return texto
def mod (n,m): #devolve o módulo e corrigido para negativos
a=n%m
if a<0 :
a+=m
return a
def convercaoIntChar (texto): #converte list de numeros para string de texto
if 0 in texto:
texto.replace(0,-1)
novotexto = [ chr(x+96) for x in texto]
return novotexto
def convercaoCharInt (texto): #converte string de texto para list de numeros
if "_" in texto:
texto.replace("_","`")
novotexto = [ord(x)-96 for x in texto]
return novotexto
modo=input("Digite 0 para codificar e 1 para decodificar: ")
chave=input("Digite a chave: ")
mensagem=input("Digite a mensagem: ")
if modo=='0':
textoplano=mensagem
codigoplano=convercaoCharInt(textoplano)
cifradocodigo=cifra(codigoplano, chave)
textocifrado=convercaoIntChar(cifradocodigo)
print("Frase final: " + textocifrado)
if modo=='1':
textocifrado=mensagem
cifradocodigo=convercaoCharInt(textocifrado)
codigoplano=decifra(cifradocodigo, chave)
textoplano=convercaoIntChar(codigoplano)
print("Frase final: " + textoplano)