我是python编码新手,尝试了一项挑战,但我遇到了困难,需要一些帮助。我几乎所有的代码都是正确的,除了一小段我似乎无法理解的代码。我的挑战是获取用户输入的一行文本,并使用凯撒密码对其进行加密。我的代码就是把“Hello world”之类的东西改成“Lipps$asvph”,但它应该说的是“Lipps${svph%”。现在我不明白为什么“{”变成了“a”,但我想问问是否有人能看到问题所在
distance = int(input("Enter the distance value: "))
code = ""
for ch in message:
ordvalue = ord(ch)
cipherValue = ordvalue + distance
if cipherValue > ord('z'):
cipherValue = ord('a') + distance - \
(ord('z') - ordvalue + 1)
code += chr(cipherValue)
print(code)
这里的逻辑是:
distance
移位字符z
以上,则将其环绕(因此,z移位1变成a)问题:像
{
这样的特殊字符超出了a..z
范围,但它们也被移位了。由于该检查仅适用于z以上的值,“a”下的值不受影响(例如“%”)修复:检查值是否超出可读符号范围(32..255),而不是
a..z
:相关问题 更多 >
编程相关推荐