Python Vigenere 代码重复错误

Posted

技术标签:

【中文标题】Python Vigenere 代码重复错误【英文标题】:Python Vigenere Code repeating error 【发布时间】:2014-02-24 22:04:36 【问题描述】:

我们必须为一个项目做一个 vigenere 密码,而我的代码只是不断重复自己。就像它不会运行加密或解密一样。 这是我的代码。 例如,这就是它的作用..

“你好,用户!

你的消息是什么??嗨

消息中有多少个字母?2

你要解密还是加密?解密

让我们解密你的消息!!

您要解密还是加密?"

print "Hey There user!"
def vig():
dore = raw_input("Do you want to decrypt or encrypt?")
if "decrypt" in dore: 
    print "Lets decrypt your message!!"
else:
    print "lets encrypt your message!!"


def dore(message):
encrypt = ''
decrypt = ''
if "encrypt" in vig(): 
 for i in range(0, len(message)):
    e = ord(message[i]) + ord(key[i%len(key)]) - 65
if e > 90:
    e -= 26
    encrypt += chr(e)
    print encrypt
if "decrypt" in vig():
    e = ord(message[i]) - ord(key[i%len(key)]) + 65
if e < 65:
    e += 26
    decrypt += chr(e)
    print decrypt

 ####################################
 ###########################################:)#####
 message = raw_input("whats your message??")
 key = raw_input("How many letters are in the message?")
 vig()
 dore(message)
 message = message
 encrypt = ''
 decrypt = ''

【问题讨论】:

能否请您检查一下您的缩进。 是的,我的错,但它在我的常规代码中是正确的。对不起。 【参考方案1】:

您在dore 中做的第一件事就是再次致电vig

if "encrypt" in vig():

尝试将加密和解密分成两个函数并相应地调用它们:

def vig(message):
    ui = raw_input("Encrypt or decrypt? ").lower()
    if "decrypt" in ui:
        return decrypt(message)
    else:
        return encrypt(message)

另外,用户不需要输入消息的长度,只需:

key = len(message)

【讨论】:

现在它说 Traceback(最近一次调用最后):文件“C:/Python27/fehio.py”,第 31 行,在 vig(message) 文件“C:/Python27/fehio .py",第 25 行,在 vig 返回 encrypt(message) NameError: global name 'encrypt' is not defined 嗯,是的;您需要根据当前函数dore 的两个部分实际定义这两个函数encryptdecrypt

以上是关于Python Vigenere 代码重复错误的主要内容,如果未能解决你的问题,请参考以下文章

Vigenere python - 找不到子字符串错误

vigenere密码中的itertools循环导致空间问题python

Python Vigenere 元组错误

我的 vigenere 密码加密功能有啥问题?

Vigenere 密码破坏了一些

python中的Vigenere密码[关闭]