当我输入“Hello World!”时,它会被加密为“KNUUXWZXAUMX”,如果我将其放入我的解密代码中,则解密返回为“hkrutwuxrju”
由于这是一个高中项目,因此需要一些必需的函数等。我必须在代码中使用函数、列表和循环。还有其他的要求,我想稍后会像包括大写字母,数字,和要加密的标点符号
我的代码是:
text = (input('Add some text: '))
def toList(text):
text.split()
return text
def encrypt(text):
shift = 3
text1 = text
encryption = ""
for x in text1:
xCode = ord(x)
xGuide = xCode - ord("A")
newGuide = (xGuide + shift) % 26
newCode = newGuide + ord("A")
newLetters = chr(newCode)
encryption = encryption + newLetters
print("encrypted text: ", encryption)
print("text:", text1)
encrypt(text)
cipherText = (input('Add some encrypted text: '))
def decrypt(cipherText):
shift = 3
cipherText1 = cipherText
regularText = ""
for x in cipherText1:
xCode = ord(x)
xGuide = xCode - ord("A")
newGuide = (xGuide - shift) % 26
newCode = newGuide + ord("A")
newLetters = chr(newCode)
regularText = regularText + newLetters
print("Encrypted text:", cipherText1)
print("Decrypted text:", regularText)
decrypt(cipherText)
我很高兴你问的是“如何调试”,而不是“如何修复”
最初的观察结果或错误报告是键入
Hello World!
,它被加密为KNUUXWZXAUMX
,但相同的文本被解密为HKRRUTWUXRJU
您现在可以使用调试器并逐步完成代码,但您可以通过各种方式变得更聪明
步骤1:设置版本控制,确保您已完成所有工作,以便您可以随时回滚。理想情况下,创建一个bug修复分支
步骤2:无需用户输入即可重现问题。而不是
写
而不是
写
这样做可以节省大量时间,并防止输入中出现拼写错误。转移到版本控制或提交(如果您在分支上)
顺便说一句,这将是一个询问堆栈溢出的好阶段。不要让伙计们自己输入。他们可能会犯错误
步骤3:减少数据量
使用
"A"
作为输入将"D"
作为加密文本-这看起来不错使用
"a"
作为输入将"J"
作为加密文本-因此您发现了一个字符更少的输入来重现问题。调试单个字符而不是一个句子要容易得多此时,您已经消除了50%的调试代码:您知道至少有一个问题出现在
encrypt
函数中,而不是decrypt
函数中。(不过,可能还有更多问题)步骤4:调试
尽早在
encrypt
函数中设置断点,并逐步完成代码。检查每个中间结果并思考它你不知道调试器是什么?下载PyCharm社区版并阅读其调试器。您需要知道如何使用调试器。这是一个不可或缺的工具
相关问题 更多 >
编程相关推荐