Python 替换凯撒密码字符串错误
这个程序将加密一条消息。这将是一个凯撒版本的替代加密消息。 它将使字母移位5Python 替换凯撒密码字符串错误,python,string,encryption,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 = strin
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
您正在使用
from string import*
从字符串模块导入所有内容,然后再次调用string
顶级模块的string.maketrans
和string.ascii\u小写
只需使用maketrans(alpha,newAlpha)
和ascii_小写字母
理想情况下,从模块导入所有内容不是一个好主意和最佳实践。您正在混乱名称空间。只需导入所需内容或导入高级模块。例如,
来自字符串导入maketrans,ascii_小写
然后使用
i=maketrans(alpha,newAlpha)
alpha=ascii\u小写字母
或
导入字符串
然后使用
i=string.maketrans(alpha,newAlpha)
alpha=string.ascii\u小写
您正在使用从string import*
导入string模块中的所有内容,然后再次调用string.maketrans
和string.ascii\u小写
只需使用maketrans(alpha,newAlpha)
和ascii_小写字母
理想情况下,从模块导入所有内容不是一个好主意和最佳实践。您正在混乱名称空间。只需导入所需内容或导入高级模块。例如,
来自字符串导入maketrans,ascii_小写
然后使用
i=maketrans(alpha,newAlpha)
alpha=ascii\u小写字母
或
导入字符串
然后使用
i=string.maketrans(alpha,newAlpha)
alpha=string.ascii_小写
使用导入字符串
而不是字符串导入中的*
,以兼容
sub
函数与您的导入方法兼容。使用导入字符串
而不是从字符串导入*
,以确保
sub
使用您的导入方法执行功能