替换Caesar Cipher字符串错误

时间:2017-03-22 13:12:07

标签: python string encryption

该程序将加密消息。它将是替换加密消息的凯撒版本。 它会将字母移动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

2 个答案:

答案 0 :(得分:2)

使用import string代替from string import *来兼容。{ sub功能与您的导入方法。

答案 1 :(得分:1)

您正在使用from string import *从字符串模块导入所有内容,然后再次在stringstring.maketrans调用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