Python Challenge

第1题 字符串替换

将字符串里面的字母往后推两个,例如a变为c,z变为b,其它字符不变.

 1 def convert_string(aString):
 2         bString = ' '
 3         for i in aString:
 4             if ord('a')<=ord(i)<=ord('w') or ord('A')<=ord(i)<=ord('W'):
 5                 k = chr(ord(i)+2)
 6             elif i == 'y' or i == 'z':
 7                 k = chr(ord('a')+1+ord(i)-ord('z'))
 8             elif i == 'Y' or i == 'Z':
 9                 k = chr(ord('A')+1+ord(i)-ord('Z'))
10             else:
11                 k = i
12             bString += k
13         return bString

效果:

 

官方推荐用maketrans方法

intab = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
outtab = "cdefghijklmnopqrstuvwxyzabCDEFGFIJKLMNOPQRSTUVWXYZAB"

trantab = theString.translate(theString.maketrans(intab,outtab))

maketrans返回转换列表,转换规则是将字符串intab中的字符转换成outtab中对应位置的字符,translate按maketrans返回的转换列表执行转换操作.

 

 

第2题 从字符串中找字符

查看网页源代码,把那一堆字符保存到文件rare_char.txt文本文件中。

file = open("/home/zhanchao/Desktop/rare_char.txt")
filestr = file.read()
for i in filestr:
        if "a"<=i<="z":
                print(i)

 

第三题 正则表达式

一些基础:正则表达式

查看网页源代码,把那一堆字符保存到rare_char.txt文本文件。

结果是linkedlist,后面是.php。

import re
file = open('/home/zhanchao/Desktop/rare_char.txt')
filestr = file.read()

pat = r'[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]'
m = re.findall(pat,filestr)
for i in m:
        print(i[4],end = "")

 

第四题:网络

这个题我是看了答案的,一开始以为nothings是指一些质数或素数。。。没想到是网址

要用search而不是match因为match是从第一行开始匹配的。

最后得到peak.html

from urllib.request import urlopen
import re
uri = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=%s"
num = "12345"
#num = str(16044/2)
while True:
    content = urlopen(uri % num).read().decode()
    print(content)
    match = re.search("and the next nothing is (\d+)",content)
    if match == None:
        break
    num = match.group(1)

 

转载于:https://www.cnblogs.com/zhanchao/p/9013410.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值