2017-03-22 35 views
0

該程序將加密一條消息。它將是凱撒版本的替代加密消息。 它將由5替代凱撒密碼字符串錯誤

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) 

字母轉向我不知道爲什麼會有

NameError: global name 'string' is not defined 

回答

1

您正在使用from string import *進口一切從字符串模塊,然後在string.maketrans再次調用string頂層模塊和string.ascii_lowercase

只需使用maketrans(alpha, newAlpha)ascii_lowercase

理想情況下,從模塊導入所有內容不是一個好主意和最佳實踐。你在混亂命名空間。只需導入您需要的或導入高級模塊。例如

from string import maketrans,ascii_lowercase
然後用
i = maketrans(alpha, newAlpha)
alpha = ascii_lowercase

import string
然後用
i = string.maketrans(alpha, newAlpha)
alpha = string.ascii_lowercase

2

使用import string而不是from string import *用於兼容 sub功能與您的導入方法。