• python chanllenge题解


    网址:chanllenge

    修改url最后的html的前缀为答案,就可以过关。

    页面上很多只有一幅图片,实际上题目描述全在页面源码中。

    然后推荐一个在线代码运行的网站 ideone

    查看所有源码:https://github.com/yrhsilence/pythonchallenge

    第零题:

    题目:要求取2的38次方。

    解:python支持**符号表示指数,也可以用match.pow()

    2 ** 38
    
    math.pow(2, 38)

    第一题:

    题目:字符变换,最简单的加密解密方法。

    解:字符相差为2,所以把所有的字母的ascci值加2就可以,下面的提示,最终的答案都使用转换既可过关。最傻in hand,不过是会被鄙视的。

      你可以用ord,chr两个内建函数,然后自己编写一个转换函数。

      可以用内建的string.maketrans建立一一对应关系,然后使用translate函数运用该对应关系。

    import string
    
    a = "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. "
    aa = "map"
    b = string.maketrans('abcdefghijklmnopqrstuvwxyz', 'cdefghijklmnopqrstuvwxyzab')
    print a.translate(b)
    print aa.translate(b)
    View Code

    第二题:

    题目:获取一个字符串中最少出现的字符。

    解:在页面的源码页,你可以获取到这个长字符串,存入文件中,然后读取出来。获取其中所有字符的出现次数,得到最少出现的字符组。按照这个字符组中各字符出现的先后顺序组合成一个字符串,即为答案。

    #!/usr/bin/python
    import sys
    
    fp = open('3.txt', 'r')
    con = fp.read()
    
    m = {}
    for c in con:
        m[c] = m.get(c, 0) + 1
    
    #print [(k, m[k]) for k in sorted(m.keys())]
    #print [v for v in sorted(m.values())]
    #sort_m1 = sorted(m.iteritems(), cmp = lambda x, y: cmp(x[1], y[1]), reverse = True)
    sort_m = sorted(m.iteritems(), key = lambda d: d[1])
    
    result = {}
    for i in range(8):
        key = sort_m[i][0]
        result[key] = con.find(key)
    
    sort_r = sorted(result.items(), key = lambda d: d[1])
    for item in sort_r:
        sys.stdout.write(item[0])
    sys.stdout.write('
    ')
    View Code

    第三题:

    题目:要你找到符合题目描述的字符串,特点是一个小写字母的两边刚好有三个大写字母。

    解:在页面的源码中获得长字符串。然后取出符合条件的字符串。把中间的那个小写字符取出来,最后合并即为结果。

    !/usr/bin/python
    
    #string reverse: s[::-1]
    
    import sys
    
    fp = open('4.txt', 'r')
    
    lines = ""
    for line in fp:
        lines += line.strip()
    
    def filte(s):
        return s[1:4].isupper() and s[4].islower() and s[-4:-1].isupper()  
               and s[0].islower() and s[-1].islower()
    
    for i, _ in enumerate(lines[4:-4]):
        word = lines[i:i+9]
        if filte(word):
            sys.stdout.write(word[4])
    sys.stdout.write('
    ')
    View Code

    第四题:

    题目:根据源码页中题目的提示,需要多次通过urllib获取网页信息,从中提取nothing的值,组成新的url。

    解:通过python的urllib库获取网页信息,然后通过re模块获取数值。注意有两点,一中间有一个页面没有数值,只有一个描述语句;二要取最后一个数值。

    #!/usr/bin/python
    
    import re
    import urllib2
    
    def get_index(index):
        url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=' + index
        html = urllib2.urlopen(url).read()
        print html
        result = re.findall('d+', html)
        if (len(result) > 0):
            return str(result[-1])
        else:
            return None
    
    index = '12345'
    for i in range(400):
        index = get_index(index)
        if index == None:
            break
    
    index = str(16044 / 2)
    for i in range(400):
        index = get_index(index)
        if index == None:
            break
    View Code
  • 相关阅读:
    删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
    Ls 命令执行什么功能?可以带哪些参数,有什么区别?
    绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
    查看文件内容有哪些命令可以使用?
    把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
    终止进程用什么命令? 带什么参数?
    查看各类环境变量用什么命令?
    怎么使一个命令在后台运行?
    Grep 命令有什么用?如何忽略大小写?如何查找不含该串的行?
    Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
  • 原文地址:https://www.cnblogs.com/silencExplode/p/3786354.html
Copyright © 2020-2023  润新知