看似简单的一个问题,不就是str()与int()两个内建函数吗?
但有些问题就接踵而至了,str()还好说,int()这个函数当我们传入的参数不是一个“数字型字符串”的时候,就会抛出错误。
举个栗子吧,print int('123aaa'):
01.jpg
果断报错了。而这样的情况如果在php里的话(用intval),是会将'123aaa'转换成123的,不会出错。
更可恶的是int('')一个空字符串也会报错。

于是自己实现一下intval函数:

def intval(str):
    try:
        return int(str)
    except:
        if str and str[0] == '-': l = 1
        else: l = 0
        for t in str[l:]:
            if t.isdigit(): l += 1
            else: break
    try:
        return int(str[0: l])
    except:
        return 0

输出结果:
02.jpg

考虑了负数、空字符的情况,基本和php里的intval类似了吧。