NameError: имя (*) не определено - PullRequest
0 голосов
/ 11 мая 2019

Я делаю это домашнее задание, которое должно выполнять криптографию 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)
...