【python challenge】Level1

写在前面

发现一个很有意思的python学习网站:http://www.pythonchallenge.com
解决现在的问题然后才能看到后面的问题,前提是你别去看剧透,有点OJ的感觉,但比OJ要有意思一点,通过自己的思考进阶到下一个Level获得成就感满满+1。然后可以在wiki查看solution,wiki中有各种花式的solution观摩.

很有意思的是,都知道在python中输入this.py 会输出The Zen of Python,里面的源代码也是活生生的反面教材

Learn

  • str.maketrans(source_str, target_str)[pyton3.3之前在string.maketrans]:创建字符串映射,定义了source_str到target_str的一一对应的映射,两个字符串长度必须相等,用于str.translate转换
  • str.translate(text, map_str):根据map_str对text进行转换,也可以直接使用text.translate(map_str)
import string

text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
table = str.maketrans(string.ascii_lowercase, string.ascii_lowercase[2:] + string.ascii_lowercase[:2])
result = str.translate(text, table)
print(result)
print(text.translate(table))

My solution

program_str = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
result = ""
lower_chr = []
for ind in range(26):
    ch = chr(ord('a') + ind)
    lower_chr.append(ch)

for i, ch in enumerate(program_str):
    chr_int = ord(ch) + 2
    if ord('a') <= ord(ch) <= ord('z'):
        chr_ind = chr_int - ord('a')
        chr_ind %= 26
        result += lower_chr[chr_ind]
    else:
        result += ch

print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值