python 输入一行、加密y变成a,加密Python加密

我正在尝试创建一个程序,它可以生成一个对任何外人来说都是胡言乱语的编码消息。在

我希望它允许使用任何旋转量来加密消息。因此,用户可以在终端中输入一条消息,并指定一个旋转量(13、4、600等),程序将打印得到的加密消息。在

最终的交互式程序将如下运行:

$python凯撒.py

键入消息:

你好,世界!

旋转方式:

5

Mjqqt,顺便说一句!在

我使用一些helper函数来帮助将问题分解为可管理的步骤。在

我尝试过编写一个名为alphabet_position(letter)的函数,它接收一个字母(一个只有一个字母字符的字符串),并返回字母表中该字母从0开始的数字位置,将0赋值给a和a,1分配给b和b,z和z的值一直到25

然后我编写了另一个函数rotate_character(char,rot),它接收一个字符char(长度为1的字符串)和一个整数rot。该函数应该返回一个长度为1的新字符串,这是按rot的位数向右旋转char的结果。它应该使用上面的alphabet_position函数,如果旋转大于25,则返回到字母表的开头。在

然后,我又编写了一个名为encrypt(text,rot)的函数,它接收字符串和整数的输入。第二个参数rot指定旋转量。函数应该返回文本中每个字母向右旋转的结果。在

终端中的结果应该如下所示:

$python凯撒.py

键入消息:

你好,世界!

旋转方式:

5

Mjqqt,顺便说一句!在

我要为这个密码的最后一部分做准备。在

Vigenere使用单词作为加密密钥,而不是整数。完成的程序将如下所示:

$python维格纳.py

键入消息:

乌鸦半夜飞!

加密密钥:

繁荣

这是我的生日!在

如果您能提供任何信息,我做了什么错误的代码,我将不胜感激。在def encrypt(text,rot):

text_new = ""

for pos in range(len(text)):

text_new += rotate_character(text[pos],int(rot))

return text_new

def alphabet_position(letter):

alphabet_pos = {'A':0, 'a':0, 'B':1, 'b':1, 'C':2, 'c':2,

'D':3, 'd':3, 'E':4, 'e':4, 'F':5, 'f':5, 'G':6, 'g':6, 'H':7,

'h':7, 'I':8, 'i':8, 'J':9, 'j':9, 'K':10, 'k':10, 'L':11, 'l':11,

'M':12, 'm':12, 'N':13, 'n':13, 'O':14, 'o':14, 'P':15, 'p':15,

'Q':16, 'q':16, 'R':17, 'r':17, 'S':18, 's':18, 'T':19, 't':19,

'U':20, 'u':20, 'V':21, 'v':21, 'W':22, 'w':22, 'X':23, 'x':23,

'Y':24, 'y':24, 'Z':25, 'z':25}

pos = alphabet_pos[letter]

return alphabet_position(letter)

def rotate_character(char,rot):

x = (alphabet_position(char))

y = (x + rot)%26

if (ord(char) >= 97) and (ord(char) <= 122): # lowercase

return x.lower

elif (ord(char) >= 65) and (ord(char) <=90): # uppercase

return x.upper

else:

return char

char = input('Enter a character:')

rot = input('Enter a number to rotate by:')

print(rotate_character(char,rot))

def main():

text = input("Type a message")

print("text")

rot = input("Rotate by:")

if __name__ == "__main__":

main()

终端返回的不是预期的加密消息结果,而是:

第10行,字母位置

返回字母位置(字母)

[上一行重复987次]

递归错误:超过最大递归深度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值