python之明密文转换

这个问题是我在学习Udacity(一个网络课程平台)学习web development课程时遇到的一个问题:

题目大概是定义一个ROT13函数,然后将输入字母转换为相应后移13个位置的字母,比如输入Hello,输出应该是Urryb,大小写不变,别的符号不变。

本能想到用一个对应的二元组的List来进行映射:这里使用的zip,它的功能是将两个列表合并成一个二元组,元组中每个元素是原来列表的元素

L1 = [1,3,5,7]
L2 = [2,4,6,8]
#使用zip将两个列表合并
print zip(L1,L2)
for (a,b) in zip(L1,L2):
  print (a,b)
L3 = [2,4,6]
#当长度不一的时候,多余的被忽略
print zip(L1,L3)#extra items are ignored
#map则不会忽略,例如下例。当L1和L3长度不一的时候,
#会用第一个参数来填充。
print map(None,L1,L3)

下面我准备用zip尝试解决这个问题

s = "abcdefghijklmnopqrstuvwxyz"
t = "nopqrstuvwxyzabcdefghijklm"
list = zip(s,t)

def ROT13(str):
    for (i,o) in list:
        str = str.replace(i,o)
    print str

运行模块,结果如下

>>> ROT13("abcdefghijklmnopqrstuvwxyz

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值