如何解决为什么这几乎相同的代码会产生不同的结果
你好,我对编码非常陌生,正在研究Caesar密码。但是对于此代码`
def encoder():
user_string=str(input('Enter text to encrypt'))
shift=int(input('Enter number to shift letters by'))
for i in range(len(user_string)):
char=user_string[i]
value=ord(char)
new_value=value+shift
new_value=chr(new_value)
print(new_value,end='')
def decoder():
user_string=str(input('Enter text to decrypt'))
shift=int(input('Enter number to shift letters by'))
for i in range(len(user_string)):
char=user_string[i]
value=ord(char)
new_value=value-shift
new_value=chr(new_value)
print(new_value,end='')
当我插入Hello World之类的东西时,它会返回正确的结果,但用#代替空格。当我将加密结果插入解码器时,它返回的字符串完全没有空格。两者之间的唯一区别应该是使用newvalue = value + shift用于编码,然后使用newvalue = value-shift用于解密。有人可以帮助我理解为什么这样做,以及如何解决加密中的#问题以及解密中没有空格的问题。谢谢。编辑我使用的shift值为3,确切的字符串是Hello world进行加密,而其编码版本用于解密。
解决方法
这是因为空间也偏移了3。您的程序是绝对正确的。
ASCII code for space is 32和#均为35。
encoder()
移Hello world
和3
会导致Khoor#zruogv
decoder()
移Khoor#zruogv
和3
会导致Hello world
如果您希望空间不移位并显示为空格,则可以在if循环中放置一个if语句。
for i in range(len(user_string)):
char=user_string[i]
if char == ' ':
print(char,end='')
continue
value=ord(char)
new_value=value+shift
new_value=chr(new_value)
print(new_value,end='')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。