为什么这个几乎相同的代码会产生不同的结果
why is this nearly same code producing different results
你好,我是编码的新手,正在研究凯撒密码。但是对于这段代码`
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 之类的东西时,它 returns 得到了正确的结果,但用 # 替换了 space。当我将加密结果插入解码器时,它 returns 字符串根本没有 space。两者之间的唯一区别应该是使用 newvalue = value + shift 进行编码,然后使用 newvalue = value-shift 进行解密。有人可以帮我理解为什么要这样做,以及如何解决加密中 # 和解密中没有 space 的问题。谢谢你。编辑我使用的移位值是 3,确切的字符串是加密的 Hello world 和解密的编码版本。
这是因为space也被移了3。你的程序完全正确。
ASCII code for space is 32 和 # 是 35。
encoder()
与 Hello world
& 3
shift 的结果应该是 Khoor#zruogv
decoder()
与 Khoor#zruogv
& 3
shift 的结果应该是 Hello world
如果想让space不移位,显示为space,可以在for循环中加入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='')
你好,我是编码的新手,正在研究凯撒密码。但是对于这段代码`
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 之类的东西时,它 returns 得到了正确的结果,但用 # 替换了 space。当我将加密结果插入解码器时,它 returns 字符串根本没有 space。两者之间的唯一区别应该是使用 newvalue = value + shift 进行编码,然后使用 newvalue = value-shift 进行解密。有人可以帮我理解为什么要这样做,以及如何解决加密中 # 和解密中没有 space 的问题。谢谢你。编辑我使用的移位值是 3,确切的字符串是加密的 Hello world 和解密的编码版本。
这是因为space也被移了3。你的程序完全正确。
ASCII code for space is 32 和 # 是 35。
encoder()
与 Hello world
& 3
shift 的结果应该是 Khoor#zruogv
decoder()
与 Khoor#zruogv
& 3
shift 的结果应该是 Hello world
如果想让space不移位,显示为space,可以在for循环中加入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='')