2017-03-22 4 views
0

Dieses Programm wird eine Nachricht verschlüsseln. Es wird eine Caesar-Version einer verschlüsselten Exchange-Nachricht sein. Es wird die Briefe von 5.Substitution Caesar Cipher String Fehler

from string import * 

original = raw_input("Enter your string: ") # prompts user for their desired string 

def sub(input, x): 
    alpha = string.ascii_lowercase 
    newAlpha = alpha[x:] + alpha[:x] 
    i = string.maketrans(alpha, newAlpha) 
    return input.translate(i) 

print sub(original, 5) 

verschieben Ich bin nicht sicher, warum es

NameError: global name 'string' is not defined 

Antwort

1

Du alles von String-Modul einge from string import * und anschließend wieder string Top-Level-Modul bei string.maketrans Aufruf und string.ascii_lowercase

verwenden Sie einfach maketrans(alpha, newAlpha) und ascii_lowercase

Idealerweise ist es nicht empfehlenswert, alles aus einem Modul zu importieren. Sie sind überfüllter Namensraum. Importieren Sie einfach was Sie benötigen oder importieren Sie ein High-Level-Modul.
für z.B.
from string import maketrans,ascii_lowercase
und verwenden dann
i = maketrans(alpha, newAlpha)
alpha = ascii_lowercase

oder

import string
und dann
i = string.maketrans(alpha, newAlpha)
alpha = string.ascii_lowercase

2

Nutzung Verwendung import string anstelle von from string import * für die Kompatibilität der sub Funktion mit Ihrer Importmethode.

Verwandte Themen