文章关键字 ‘Python’

VBS也玩验证码识别

2010年10月31日,星期日

这几天不是在学Python嘛,怎么还老写VBS的东西。

其实我学Python有两个原因,一是很多开源的BT下载软件是用Python写的,哪天没事可以改改源码做做弊什么的;二是以前无意中看到《python验证码识别之Discuz》的系列文章,顿时感到Python之强大,验证码都能识别,想做什么不行?

几天下来学了点Python的皮毛,于是迫不及待的看了一下《python验证码识别之Discuz(一) 》,发现依然看不懂。并不是看不懂语法,而是看不懂算法。PIL库固然强大,但是光靠库本身还是无法识别验证码,还得加上图形算法。可见语言什么的都是浮云,会算法才是王道。

于是Google了一下验证码识别的原理,自己尝试着用VBS识别晨光BT(该网站需要IPv6网络才能访问)的验证码,发现并没有想象中的困难。之所以选择晨光BT的验证码,是因为它本身比较简单,再加上我还有它的源码,识别起来会相对容易些。

鉴于大部分网络依然是IPv4,我把生成验证码的页面放到了博客的测试目录中,可以点击这里查看。

(更多…)

用VBS精确计算2的100次方

2010年10月27日,星期三

即Grade school multiplication(小学乘法?)算法的VBS实现。既然Python可以计算2的100次方,那么我就要用VBS实现。不过这个效率嘛,计算2的10000次方Python用了0.009013秒,VBS用了120.9805秒,不是一个等级的,我就不多说什么了。

直接上代码: (更多…)

Python中的长整型(Long)乘法C源码分析

2010年10月26日,星期二

最近学Python看的书是《Learning Python》第三版,在Chapter 2里有一个示例

print 'hello world'
print 2 ** 100

然后说了句“我将在这本书的后面解释print语句,以及为什么在Python中计算2的100次方不会溢出”。

I’ll explain the print statement, and why you can raise 2 to the power 100 in Python without overflowing, in later parts of this book.

Python中的长整型(long)和C语言的long有很大的区别(C语言的long对应Python里的plain integer),Python中的long可以实现无限精度(unlimited precision),很好奇这个在C代码中是怎么实现的,于是看了一下Python的C源码。

虽然求幂运算也有对应的算法,但是最终还是依赖于乘法来实现,所以在这里只研究一下Python的长整型乘法。长整型乘法在Python源码中的Objects目录的longobject.c中定义。 (更多…)

会Python的人,你惹不起

2010年10月25日,星期一

从今天开始学习Python。

首先当然是Hello world。

print "Hello world"

输出挺简单,然后试试输入。

name = raw_input("Enter your name:")
print "Hello " + name

也挺简单,再试试条件和循环,枚举100以内的质数。

for i in range(2, 101) :
    for j in range(2, i):
        if i % j == 0 : 
            break
    else:
        print i

感觉for的用法有点奇怪,最后再试试正则表达式,依然是质数。

import re
regex = re.compile(r"^1?$|^(11+?)\1+$")
for i in range(1, 100) :
    if not regex.match("1" * i) :
        print i

哥也是会Python的了,会Python的人,你惹不起。

VBScript的结束,Python的开始

2010年10月24日,星期日

第一次接触VBScript是大一第一个学期期末,那时候刚买电脑不久,由于某种需要(现在已经记不得了)装了个按键精灵。按键精灵的帮助文档中有一部分是VBS教程(可以在按键精灵论坛上找到),其中第一个程序类似于

MsgBox "Hello world"

现在看来当然没什么,但是当时我刚刚初学完C语言,写来写去都是一个黑黑的console窗口。现在在记事本里写一行代码,保存为VBS,连编译都不需要,竟然能够弹出一个GUI对话框,足以让我觉得VBS是如此的强大。

那个教程写得实在是太简单,看完依然摸不着头脑,于是到网上到处搜索所谓的VBS教程,无奈看完仍旧似懂非懂。后来花了一个寒假的时间啃完英文版《Microsoft VBScript Step by Step》,VBS才总算有点入门。于是从此之后鄙视一切所谓的“教程”。

算起来,学VBS的时间也不短了,玩腻了,而且也很久没有学习新的语言了。貌似最近Python很流行,“只有你想不到,没有 Python 做不到”,听起来很牛逼的样子,我也赶一下潮流吧