Skip to main content
 首页 » 编程设计

python之python中的凯撒密码

2025年05月04日9cmt

我得到的错误是

Traceback (most recent call last): 
  File "imp.py", line 52, in <module> 
    mode = getMode() 
  File "imp.py", line 8, in getMode 
    mode = input().lower() 
  File "<string>", line 1, in <module> 
NameError: name 'encrypt' is not defined 

下面是代码。

# Caesar Cipher 
 
 
MAX_KEY_SIZE = 26 
 
def getMode(): 
    while True: 
        print('Do you wish to encrypt or decrypt a message?') 
        mode = input().lower() 
        if mode in 'encrypt e decrypt d'.split(): 
            return mode 
        else: 
            print('Enter either "encrypt" or "e" or "decrypt" or "d".') 
 
def getMessage(): 
    print('Enter your message:') 
    return input() 
 
def getKey(): 
    key = 0 
    while True: 
        print('Enter the key number (1-%s)' % (MAX_KEY_SIZE)) 
        key = int(input()) 
        if (key >= 1 and key <= MAX_KEY_SIZE): 
            return key 
 
def getTranslatedMessage(mode, message, key): 
    if mode[0] == 'd': 
        key = -key 
    translated = '' 
 
    for symbol in message: 
        if symbol.isalpha(): 
            num = ord(symbol) 
            num += key 
 
            if symbol.isupper(): 
                if num > ord('Z'): 
                    num -= 26 
                elif num < ord('A'): 
                    num += 26 
            elif symbol.islower(): 
                if num > ord('z'): 
                    num -= 26 
                elif num < ord('a'): 
                    num += 26 
 
            translated += chr(num) 
        else: 
            translated += symbol 
    return translated 
 
mode = getMode() 
message = getMessage() 
key = getKey() 
 
print('Your translated text is:') 
print(getTranslatedMessage(mode, message, key)) 

请您参考如下方法:

问题出在这里:

print('Do you wish to encrypt or decrypt a message?') 
mode = input().lower() 

在 Python 2.x 输入中使用 raw_input() 而不是 input()。

python 2.x:

  • 从标准输入中读取一个字符串:raw_input()
  • 从标准输入中读取一个字符串,然后对其求值:input()。

Python 3.x:

  • 从标准输入中读取一个字符串:input()
  • 从标准输入中读取一个字符串,然后对其求值:eval(input())。