描述
编写程序实现如下功能:
程序接收用户输入原文(只能为大小写英文字母和阿拉伯数字),运行后输出密文。原文和密文的对应关系为:
原文:abc...xyzABC...XYZ012...789
密文:cde...zabCDE...ZAB123...890
原文和密文字符一对一对应;
原文字符a到y、A到Y对应的密文字符依次为该字符按英文字母顺序的下数第2个,数字0到8对应的密文字符依次为按阿拉伯数字顺序的下1个,例如原文为a,密文为c,原文为C密文为E,原文为5,密文为6;
字符y、z、Y、Z、9,依次对于a、b、A、B、0;
提示:使用 len() 函数,可以获得字符串中字符的个数,即字符串的长度,如 len('abc') 的结果是 3。
注意:
输入格式
用户输入数据为一行包含英文字符和数字的字符串,输入使用 input(),不要增加额外的提示信息。
输出格式
输出结果为一行密文,除此外不要输出任何内容。
import string
lowerletter=string.ascii_lowercase #26个小写字符
upperletter=string.ascii_uppercase #26个大写字符
digitletter=string.digits #10个数字
def newposition(target):
if target.isdigit():
currindex=digitletter.index(target)
newindex = (currindex + 1) % 10 #索引加1对10求余
return digitletter[newindex]
elif target.islower():
currindex=lowerletter.index(target)
newindex = (currindex + 2) % 26 #索引加2对26求余
return lowerletter[newindex]
elif target.isupper():
currindex=upperletter.index(target)
newindex = (currindex + 2) % 26 #索引加2对26求余
return upperletter[newindex]
def newletter(list):
tmpletter = ''
for i in list:
tmpletter += newposition(i) #拼接字符串
return tmpletter
inputstream = input()
print(newletter(inputstream))