09
2020
04

python编程练习题

import re
import requests

# 题目地址 http://www.pythonchallenge.com
url = 'http://www.pythonchallenge.com/pc/def/%s.html'


# http://www.pythonchallenge.com/pc/def/0.html
# 2的38次方
def q0():
    key = 2 ** 38
    print('Q0\nkey:%s' % key)
    print(url % key)


# http://www.pythonchallenge.com/pc/def/map.html
# 每个字符后推两位, y->a z->b
def q1():
    s = "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."
    print("Q1\n%s" % s)
    # 方法一
    s2 = ''
    for c in s:
        # print(c)
        s1 = c
        i = ord(c)
        if i >= 97 and i <= 122:

            if i > 120:
                i -= 26
            s1 = chr(i + 2)

        s2 += s1
    print(s2)

    # 方法二
    s1 = 'abcdefghijklmnopqrstuvwxyz'
    s2 = 'cdefghijklmnopqrstuvwxyzab'
    t = str.maketrans(s1, s2)
    print(s.translate(t))

    key = 'map'.translate(t)
    print('map->%s' % key)
    print(url % key)


# http://www.pythonchallenge.com/pc/def/ocr.html
# 去掉不是字母的字符
def q2():
    f = open('q7_2.txt', 'r')
    s = f.read()
    f.close()
    key = ''
    for c in s:
        i = ord(c)
        if 97 <= i <= 122:
            s1 = chr(i)
            key += s1
    print('Q2\nkey:%s' % key)
    print(url % key)


# http://www.pythonchallenge.com/pc/def/equality.html
# 小写字两边有三个大写字母,找到固定大小写组合xXXXxXXXx
def q3():
    # 方法1
    f = open('q7_3.txt', 'r')
    data = f.read()
    f.close()

    reg = re.compile(r'[^A-Z][A-Z]{3}[a-z][A-Z]{3}[^A-Z]')
    ls2 = reg.findall(data)
    key = ''
    for l in ls2:
        # print(l)
        key += l[4]
    print('Q3\nkey:%s' % key)

    # 方法2
    f = open('q7_3.txt', 'r')
    ls = f.readlines()
    f.close()
    ls = [l.strip() for l in ls]

    key = ''
    i = -1
    for l in ls:
        i += 1
        j = -1
        for c in l:
            j += 1
            if 'a' <= c <= 'z' and j > 3 and j < len(l) - 3:
                n1 = 0
                n2 = 0
                n3 = 0
                n4 = 0
                for i1 in range(j - 4, j - 3):
                    if i1 >= 0 and 'A' <= l[i1] <= 'Z':
                        n1 += 1
                for i1 in range(j - 3, j):
                    if 'A' <= l[i1] <= 'Z':
                        n2 += 1
                for i1 in range(j + 1, j + 4):
                    if i1 < len(l) and 'A' <= l[i1] <= 'Z':
                        n3 += 1
                for i1 in range(j + 4, j + 5):
                    if i1 < len(l) and 'A' <= l[i1] <= 'Z':
                        n4 += 1

                if n1 == 0 and n2 == 3 and n3 == 3 and n4 == 0:
                    # print(l[j - 4:j + 4])
                    key += c
    print('key:%s' % key)
    print(url % key)


# http://www.pythonchallenge.com/pc/def/linkedlist.php
# 不停跳转
def q4():
    print('Q4\n')
    url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345'
    while True:
        # print(url)
        s = requests.get(url).text
        print(s)
        if 'and the next nothing is ' in s:
            id = s.replace('and the next nothing is ', '')
            url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=' + id
        else:
            print('http://www.pythonchallenge.com/pc/def/' + s)
            break


# http://www.pythonchallenge.com/pc/def/peak.html
# pronounce it
def q5():
    pass


if __name__ == '__main__':
    q0()
    q1()
    q2()
    q3()
    q4()

q7_2.txt

q7_3.txt


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。