我正在做应该做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)