前年的斐波那契蹲在地上看着你,笑而不语

我之前那个更新hosts的脚本啊。

匹配的是开头的注释和结尾的注释。

然后那个站主没事总改注释。

结果我那个脚本动不动就失效。

然后我就得改正则重新提交。

改多了我就烦了。

就懒得更新hosts了。

今儿个我心情好。

打开脚本一看。

我他娘的为什么不直接匹配hosts内容?

为他娘的什么?

啊?

你敢睁大狗眼看看

119.161.83.27    google.com

吗?

一个IP,一个换行符。

啊?

啊?

要注释有个卵用?

啊?

r‘(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} [^\n]+)\n‘

啊??

 1 #encoding:utf-8
 2 import urllib
 3 import re
 4 import os
 5
 6 url = ‘http://www.360kb.com/kb/2_122.html‘
 7 regexHosts = r‘(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} [^\n]+)\n‘
 8 regexTimeUpdated = r‘google hosts (\d\d\d\d\.\d\d?\.\d\d?)‘
 9
10 hostsPath = ‘C:\\Windows\\System32\\drivers\\etc\\hosts‘
11
12 def retrievePage(url):
13     ‘‘‘ 读取页面源代码。 ‘‘‘
14     response = urllib.urlopen(url)
15     page = response.read()
16     return page
17
18 def matchTimeUpdated(page):
19     ‘‘‘ 从页面源码中匹配出hosts更新时间。 ‘‘‘
20     timeUpdated = re.search(regexTimeUpdated, page)
21     if not timeUpdated:
22         return ‘unknown time‘
23     else:
24         return timeUpdated.group(1)
25
26 def matchHostList(page):
27     ‘‘‘ 从页面源码中匹配出host列表。 ‘‘‘
28     result = re.findall(regexHosts, page, re.S)
29
30     if not result:
31         return ‘#Hosts update failed.\n#May resolved by update the script.‘
32     else:
33         return result
34
35 def concatenateHosts(hosts):
36     ‘‘‘ 把列表拼接成字符串。 ‘‘‘
37     return ‘\n‘.join(hosts)
38
39 def addExtraInfo(srcString, extraInfo):
40     ‘‘‘ 在第一行添加额外信息。‘‘‘
41     return extraInfo + ‘\n‘ + srcString
42
43 def write2File(hosts, filePath):
44     ‘‘‘ 写出到文件。 ‘‘‘
45     f = open(filePath, ‘w‘)
46     f.write(hosts)
47     f.close()
48
49 def run():
50     ‘‘‘ 主运行函数。 ‘‘‘
51     page = retrievePage(url)
52
53     hosts = matchHostList(page)
54
55     extraInfo = ‘‘‘#Hosts updated at %s
56 #Script written by [email protected]://github.com/mlxy, feel free to modify and distribute it.
57 ‘‘‘ %matchTimeUpdated(page)
58     hostsWithExtra = addExtraInfo(concatenateHosts(hosts), extraInfo)
59
60     write2File(hostsWithExtra, hostsPath)
61
62 if __name__ == ‘__main__‘:
63     run()
64     print ‘Finished.‘

啊???

啊?

时间: 2024-11-05 18:51:01

前年的斐波那契蹲在地上看着你,笑而不语的相关文章

P1962 斐波那契数列

传送门 斐波那契数列 看一眼果断递推 f[ i ] = f[ i-1 ] + f[ i-2 ] 嘛 数据一看.. 好像不行.... 那就矩阵优化一下嘛 最基础的矩阵乘法嘛 (不懂先学一下 矩阵乘法 吧) 稍微想一想: 设矩阵为 A 那么矩阵 [  f[i-2]   ,   f[i-1]  ] * A 要等于 [  f[i-1]   ,   f[i]  ](即要等于 [ f[i-1]   ,   f[i-1]+f[i-2]  ]) 在纸上稍微画一下就得到 A 了 (随便挂一下当初学构造矩阵的链接:

斐波那契数列的矩阵推导(看不懂的可以放弃矩阵了)

一.矩阵乘法 设矩阵A,B 满足 :A的列数==B的行数 矩阵乘法的运算规则: 将A矩阵的每一行乘以B矩阵的每一列 * == == 二.斐波那契数列的矩阵推导 首先我们想 Fib[i]=Fib[i-1]+Fib[i-2]; 所以斐波那契数列的第i项之与两个数也就是Fib[i-1]+Fib[i-2]有关 那么我们可以设第一个矩阵 M1= 因为我们需要利用矩阵推出斐波那契的第n项 所以我们设M1的下一项为M3 则M3=(也就是让M1的下标整体后移一位) 那么现在我们需要一个过渡矩阵M2来实现这个从M

看数据结构写代码(53) 静态查找表(线性查找,二分查找,斐波那契查找,插值查找)

查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录). 查找表分类:静态查找表和动态查找表. 静态查找表:只查找,而不进行插入,删除. 动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素. 静态表的 查找 大致 四种 算法: 线性查找,二分查找,斐波那契查找和插值查找. 其中 在线性查找之前,对表 无要求.对于 其余三种 需要 在查找之前 排序.插值查找 除了 需要 排序,还需要 均匀分布. 下面 给出代码: 线性查

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

CF735C 数论\平衡树叶子节点的最大深度\贪心\斐波那契\条件归一化

http://codeforces.com/problemset/problem/735/C 题意..采用淘汰赛制..只要打输就退出比赛..而且只有两个选手打过的场数 相差不超过1才能比赛..最后问你..最多打几场比赛能决出冠军 那么这个题的做法是..画图..观察..分析 Tip:首先我们观察未知量的形式..它是一个复合函数的形式..max(决出冠军的所有可能的比赛方式的场数) 那么我们首先要求括号最里面的东西..即符合条件的所有可能的比赛方式的场数 那么我们可以画一画 我一开始为了保证比赛能正

NYOJ 461-Fibonacci数列(四)(求斐波那契数列前4位)

题目地址:NYOJ 461 思路:斐波那契数列的通项公式为 然后下一步考虑如何产生前4位: 先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432, 那么log10(10234432)=log10(1.0234432*10^7)[用科学记数法表示这个数]=log10(1.0234432)+7; log10(1.0234432)就是log10(10234432)的小数部分. log10(1.0234432)=0.0

分治法--二分查找、乘方、斐波那契数

1.二分查找 常见错误: 死循环:循环体外的初始化条件,与循环体内的迭代步骤, 都必须遵守一致的区间规则,也就是说,如果循环体初始化时,是以左闭右开区间为边界的,那么循环体内部的迭代也应该如此.如果两者不一致,会造成程序的错误. 溢出:middle = left + (right - left) / 2 终止条件:一般来说,如果左闭右闭,则left<=right: 如果一开一闭,则left<right: 关键看left能不能等于right,而且要考虑实际情况,有时不能这样简单终结,会出现死循环

洛谷P1306 斐波那契公约数

P1306 斐波那契公约数 题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少? 输入输出格式 输入格式: 两个正整数n和m.(n,m<=10^9) 注意:数据很大 输出格式: Fn和Fm的最大公约数. 由于看了大数字就头晕,所以只要输出最后的8位数字就可以了. 输入输出样例 输入样例#1: 4 7 输出样例#1: 1 说明 用递归&递推会超时 用通项公式也会超时 /* 首先,斐波

UVA 11582 Colossal Fibonacci Numbers! 大斐波那契数

大致题意:输入两个非负整数a,b和正整数n.计算f(a^b)%n.其中f[0]=f[1]=1, f[i+2]=f[i+1]+f[i]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵快速幂,输出等了几秒钟才输出完,肯定会超时.因为所有计算都是要取模的,设F[i]=f[i] mod n.F[0]=F[1]=1.只要出现F[i]=F[i+1]=1,那么整个序列就会重复.例如n=3,则序列为1,1,2,0,2,2,1,0,1,1……第九项和第十项都等于1,所以之后的序列都会重复. 至