gpt4 book ai didi

python - 凯撒密码 - 无法工作

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:03 24 4
gpt4 key购买 nike

我已经为我的 Python 类完成了我应该完成的任务,但是我似乎无法打印最终结果。该任务的目的是创建一个程序:

  • 允许使用用户选择的偏移量进行加密或解密
  • 然后它应该获取该信息并将主题词的字母移动该偏移值,从而为您提供加密或解密的产品

问题是我的代码不会打印结果,我看不出有什么问题。

这是我的代码:

 Choice = input("Would you like to decrypt or encrypt a message? Please 
enter 'E' or 'D': ")
Message = input("Enter text to Cipher: ")
Offset = int(input("Please enter your offset: "))
Encrypt = ''
Decrypt = ''

if Choice == "e".upper():
for character in Message:
x = ord(character)
Encrypt += chr(Offset + x)
print (Encrypt)
if Choice == "d".upper():
for character in Message:
x = ord(character)
Decrypt += chr(Offset - x)
print (Decrypt)

为什么我没有得到 print() 的输出?

最佳答案

首先,很明显:这些不是您正在寻找的路径

您的“if Choice”选择错误,因此您可能永远不会执行您期望的路径。您从不强制输入,因此您的 if 语句需要是 if Choice.upper() == 'E': 或者更明确地说,if (选择 == 'E') 或 (选择 == 'e'):。我在下面的示例中使用了两者。

接下来,您的实际程序:凯撒密码 ROTATE

您没有遵守凯撒密码的旋转性质。 Ceaser 密码就像 12 小时制。 “11 点​​后 4 小时”不是“15 点钟”,而是“3 点钟”,在 Python 中是:(11 + 4) % 12

考虑到这一点,ASCII 字符的范围是多少?那里有多少?您是否包括非字符但可打印的内容?您是否包括整个范围的有效 Unicode? (顺便说一下,包括 unicode 可能非常接近于不可能,因为值是如何从页面构造的性质,以及其他问题。)

所以简单的情况是 ASCII 值,32 到 126 之间的可打印字符。(这里有一个图表供引用:ASCII Table)

这为我们提供了有效集中的 126 - 32 = 94 个字符,类似于 12 小时制中的 12 个有效小时。这也意味着我们的底值为 32,这意味着任何东西都不能低于该值。

我们的密码程序看起来像这样:

  1. 接受用户的转变
  2. 从给定值中减去 32
  3. 根据移位值调整
  4. 通过将移位后的值对 94 取模得到真正的移位
  5. 加回32

解密过程就是逆运算。

Choice = input("Would you like to decrypt or encrypt a message?\nPlease enter 'E' or 'D': ")
Message = input("Enter text to Cipher: ")
Offset = int(input("Please enter your offset: "))
Encrypt = ''
Decrypt = ''

if (Choice == 'e') or (Choice == 'E'):
for character in Message:
x = ord(character) - 32
Encrypt += chr(((Offset + x) % 94) + 32)
print(Encrypt)
if Choice.upper() == 'D':
print("You didn't think I was going to do all your homework for you, right?")

显然,这可以进行调整以扩大/缩小输入或输出的有效范围。大多数凯撒密码示例仅使用 [A-Z] 作为有效字符,因此范围为 26,底部值为 65,您必须对 Message.upper() 等执行操作。但原理是一样的。

关于python - 凯撒密码 - 无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33589719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com