我用Python编写了一个简单的加密程序。 加密效果很好,但解密却没有。 当我输入1到位移时,每个字母都有效,但最后一个(Z)没有。 当我输入2 Y时,Z不会解读。
一个例子: 消息:XYZ和位移是1,结果是:yza,当我解读时,它看起来像这样:xy`
choise=input("Enter 1 to encryption or 2 to decryption: ")
text=input("Enter a message: ")
displacement=int(input("Enter displacement: "))
ready=True
if displacement<0 or displacement>26:
print("Enter 1-26")
ready=False
print("Original message: ", text)
message=""
index=0
if ready==True:
if choise=="1":
while index<len(text):
i=ord(text[index])
i=i+displacement
index=index+1
if i>ord("z"):
i=i-26
char=chr(i)
message=message+char
print("Encrypted message: ",message)
else:
if choise=="2":
while index<len(text):
i=ord(text[index])
i=i-displacement
index=index+1
if i>ord("z"):
i=i+26
char=chr(i)
message=message+char
print("Decrypted message: ",message)
else:
print("You have to enter 1 or 2 when choosing.")
答案 0 :(得分:2)
问题当然在if i>ord("z"):
。它应该是if i<ord("a"):
,因为你正在减去。
请注意,当您使用大写和小写字母时,这将不会继续有效。