首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

这段代码,是小弟我错了吗?好郁闷

2012-01-19 
这段代码,是我错了吗?好郁闷。第一个方法是我写的,结果,管事的说我写得不好,太C++了,不够python(他没真正学

这段代码,是我错了吗?好郁闷。
第一个方法是我写的,结果,管事的说我写得不好,太C++了,不够python(他没真正学过C++,只懂基本的C++概念而已),要我按第二个写,后来他又觉得不好,自己写了第三个。而且背着我替换了我写的代码。

相信大家看得出,为了以示和我的不同,我用一个值减去 'a '(ASIIC码值97),而他偏要减去大写的 'A '(65)。其实我刚才测试了一下,第三个是效率最低的,只有第一个的一半。

以前有人说搞技术的总是互相轻视,认为人不如我。自认为很少有这种想法,一直很谦虚,可为什么总有人这样呢?还做得那么过份。

import   time,os,string,sys
import   re

def   is_valid_id_card_num   (self,   number):
        number.strip()
        if   len(number)   <>   8   or   not   number[0:1].isalpha()   or   not   number[1:].isdigit():
                return   False
        prefix   =   number[0:1].lower()
        num   =   int(number[1:])
        sum   =   0
        for   i   in   range(1,   8):
                sum   +=   (num   %   10)   *   i
                num   =   num   /   10
        return   0   ==   (sum   +   8   *(ord(prefix)   -   97   +   1))   %   11  

def   is_valid_id_card_num1   (self,   number):
        number.strip()
        if   len(number)   <>   8   or   not   number[0:1].isalpha()   or   not   number[1:].isdigit():
                return   False
        list   =   [ord(number[0:1].lower())   -   97   +   1]   +   [int(i)   for   i   in   number[1:].strip()]
        sum   =   0
        for   i   in   range(8,   0,   -1):
                sum   +=   i   *   list[-i]
        return   0   ==   sum   %   11

def   clean_id_card_number(self,   id):
        #id   =   self.data[ 'id_card_number ']
        regex   =   re.compile( '^[a-zA-Z][0-9]{7}$ ')
        if   regex.match(id)   is   None:
                #raise   forms.ValidationError(   _( 'ID   card   number   must   be   one   letter   with   7   digit   numbers ')   )
                return   False
       
        c   =   ord(id[0].upper())   -   65   +   1
        l   =   [c]+   [int(i)   for   i   in   id[1:]]
        s   =   0
        for   i   in   range(8):
                s   +=   (i+1)   *   l[-(i+1)]
               
        if   s   %   11   !=   0   :
                #raise   forms.ValidationError(   _( 'Invaild   ID   card   number ')   )


                return   False
       
        #return   self.data[ 'id_card_number ']
        return   True


[解决办法]
呵呵,心态平和很重要
[解决办法]
哎,都这样啊,忍
[解决办法]
管事可能背着你改写方式上有些不对,代码我看了一下,第三段是比较长.
不过细看可读性可能第三段是好些:
1.异常处理处有明确字符串
2.ord(number[0:1].lower()) - 97 + 1 改为 ord(id[0].upper()) - 65 + 1 不像是为了表示与你不同, 而是业界的习惯吧. 因为65比97小, 所以从数学上减大写的更清楚些(.upper使数字变小, 再-65得到差距, 而.lower使数字变大,再得-97的差距感觉可能没那么顺), 只是一种个人习惯, 不要那么较真啦.
我是学C++的,python的语法都不知道.不过看了他的代码我知道是在处理一串card_num的字符串,估计是清楚(没细看).你的代码我只能看出在整List,可能这是因为你写的过于底层化,过于重效率(忽视代码的可读性和可重用性吧). 所以他说 "太C++了,不够python ", 呵呵.

热点排行