当前位置: 首页 > 知识库问答 >
问题:

凯撒密码加密

程胡非
2023-03-14

我需要编写一个python、hacker和wow这些单词的加密文本,并且使用不包括使用RAW_INPUT的python中的凯撒密码,距离为3。这是我到目前为止,但我不断得到一个错误消息,我不知道如何修复它。

>>> plainText = input("python: ") 
python: distance = int(input("3: ")) 
>>> code = "" 
>>> for ch in plainText:    
        ordValue = ord(ch)  
        cipherValue = ordValue + distance   
        if cipherValue > ord('z'):      
        cipherValue = ord('a') = distance - \                 
        (ord('z') - ordValue + 1)        
SyntaxError: can't assign to function call

共有1个答案

岑经纶
2023-03-14

您似乎将此代码输入到交互式提示符中,而不是将其保存为文件并运行。如果是这种情况,那么当您使用input时,窗口将在允许您继续输入代码之前提示您输入。

plainText = input("python: ") 

输入此行后,键入要加密的单词并按enter键。只有到那时,你才应该写这一行:

distance = int(input("3: ")) 

在下一行开始之前,您应该输入所需的距离,code=“”

作为一个文体技巧,我建议将提示文本从“Python:”“3:”更改为类似于“text to encrypt:”和“distance:”,这样用户就可以清楚地看到他应该输入什么。

接下来,这里有一个缩进错误:

    if cipherValue > ord('z'):      
    cipherValue = ord('a') = distance - \      

if条件后面的行应该缩进一级。

    if cipherValue > ord('z'):      
        cipherValue = ord('a') = distance - \      

接下来,在这些线路上有两个问题。

    cipherValue = ord('a') = distance - \
    (ord('z') - ordValue + 1)
  • 行延续字符\后不应有空格。在任何情况下,最好将整个表达式写在一行上,因为这一行并不长,不能分成两行。
  • 第二个等号是错字。应该是加号。

-

    cipherValue = ord('a') + distance - (ord('z') - ordValue + 1)
plainText = input("text to encrypt: ") 
distance = int(input("distance: ")) 
code = "" 
for ch in plainText:    
    ordValue = ord(ch)  
    cipherValue = ordValue + distance   
    if cipherValue > ord('z'):      
        cipherValue = ord('a') + distance - (ord('z') - ordValue + 1)
    code = code + chr(cipherValue)
print(code)
#to do: write this to a file, or whatever else you want to do with it

结果:

text to encrypt: hacker
distance: 13
unpxre
 类似资料:
  • 问题内容: 我通过java进行了凯撒密码,它可以运行,但是在用户输入密钥后不对任何内容进行加密! 这是我的代码 跑: 问题答案: 使用效率不是很高…您可以对值进行整数运算以获得其索引。 我在代码中添加了注释以解释更多信息,但这就是我想出的。 输出应该是这样的

  • 我想知道如何限制加密的ASCII范围从32-126。 这个是用来解密的 我的加密工作得很好(当我引用解密函数时),但我的解密并不像它应该的那样工作。 额外注意:我们只需要在编码时进行右移,给出一个字符串供整个程序加密和解密(“这是C++”) 注意:在添加更多代码描述的过程中

  • 示例:返回。如果给定的整数值小于0或大于26,则应返回空字符串。 我的问题是,作为回报,它只给我真或假。如何解决这个问题:该方法应该返回一个字符串,其中每个字符都是根据指定的整数值移动的。

  • 首先,我是编程的新手,所以要温柔。而且,我一直在做这个任务,但没有任何结果。任务是创建一个凯撒密码程序,它加密或解密一个段落最多100个字符。实际上是两个独立的实验室。第一个实验是加密,然后第二个实验是解密。一旦我弄清楚了如何创建加密程序,解密程序应该很简单,因为我可以只进行语义更改来解密而不是加密。无论如何,这是我到目前为止的代码。它通过了他们给我们的5个测试中的4个,但出于某种原因,有一个测试

  • 我在做凯撒密码,这是我的密码 我尝试使用%来解决这个问题(我也不是100%确定如何使用模运算符),但我没有成功。 文本文件的内容是: