python凯撒加密代码_【python_字符串】凯撒密码加密问题

博客内容讲述了如何读取一个词语和一个数字,然后通过ord和chr函数将词语中的字母按指定位移进行平移。原始代码存在问题,因为input默认读取字符串,导致位移数字需转换为整型。修复后的代码将输入的位移数字转换为整型,并使用列表来处理字符串,成功实现了字母的平移操作。
摘要由CSDN通过智能技术生成

问题描述:

读取一个词语和一个位移数字,将词语中的字母向后平移输入数字的位数(ord and char可以将数字和字符串相互转化)

(第一次写的代码)

g=input('print a string\n')

ga=input('the number you want to move is:\n')#读取两个参量

def rotate_word(g,ga):

n=len(g)

ne=g

neq=g

for i in range(n):

if ord(g[i]) < 123-ga: #这里的chr(122)代表小写字母z

ne[i]=chr(ord(neq[i])+ga)

else:

ne[i]=chr(ord(neq[i])+ga-26)

#遍历字母,位移

print("the answer is",ne)

rotate_word(g,ga)

错误: input只能读取字符串,所以输入的位移位数被视为字符串,函数中相加出现问题

字符串一旦定义之后就不能更改,一开始应该定义成list类型

改后:

g=input('print a string')

ga=int(input('the number you want to move is:\n'))

def rotate_word(g,ga):

n=len(g)

ne=list(g)

neq=g

for i in range(n):

if ord(g[i]) < 123-ga:

ne[i]=chr(ord(neq[i])+ga)

else:

ne[i]=chr(ord(neq[i])+ga-26)

print("the answer is",ne)

rotate_word(g,ga)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值