1.题目描述:
给定一个英文文件名,包含大写字母,小写字母。要求将所有的大写字母向后移一位,如'A'---'B','C'---'D'....'Z'---'A'依此类推,小写字母后移一位,形成闭环'a'---'b','b'---'c','c'---'d'....'z'---'a'。
2.解题关键
明确A的ascii 码为65;cii码为97 详情可见:ASCII码一览表,ASCII码对照表http://c.biancheng.net/c/ascii/
在python中,ord(c) :可以将字母c转为相应ascii码,
返回值是对应的十进制整数。
chr(c): 可以将ascii码转为对应的字母
chr() 函数(对于8位的ASCII字符串)
解题思路:将符合条件的字母转为ascii码,对其加1移位后,再转为字母,对于A,a这类特殊字母直接强制转换。
解题要点:为了防止计算ascii码溢出,可以先减去起始位置的ascii码,计算出相对位移后 加上起始位置的ascii
3.代码部分
#输入一个字符串
str=input()
#初始化输出
j=0
for i in str:
#获取到当前字母的ascii码
iord= ord(i)
#若当前字母是尾部字母,则直接另其ascii码减去25,变为第一位字母。
if i=='Z' or i=='z':
iord=iord-25
j=chr(iord)
#若当前字母是中部字母,则按照规则用ord转为ascii 后移一位ascii
#再用chr转为字母
elif i<'z' and i>='a':
iord=(iord+1-97)%26+97
j=chr(iord)
#若当前字母是中部字母,则按照规则用ord转为ascii 后移一位ascii
#再用chr转为字母
elif i<'Z' and i>='A':
iord=(iord+1-65)%26+65
j=chr(iord)
#输出字母
print(j)
这里字母是后移1位,可以调整后移字母位数,实现不同的加密