一个Python程序员的进化

本文通过展示不同层次Python程序员实现阶乘的不同方式,从新手到专家级别,展现了Python编程技能的成长过程。每种实现都有其独特之处,反映了程序员的背景和思维方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的Python程序员编出的Python代码,显示出了不同的风格,代码都很简单,有趣。下面让我们一起来看看一个Python程序猿进阶的全过程吧。偷笑

编程新手

    def factorial(x):  
        if x == 0:  
            return 1  
        else:  
            return x * factorial(x - 1) //不简单啊,迭代,新手哦。
    print factorial(6) 
一年编程经验(学Pascal的)

    def factorial(x):  
        result = 1 
        i = 2 
        while i <= x:  
            resultresult = result * i  
            ii = i + 1  
        return result  
    print factorial(6) 
一年编程经验(学C的)
    def fact(x): #{  
        result = i = 1;  
        while (i <= x): #{  
            result *= i;  
            i += 1;  
        #}  
        return result;  
    #}  
    print(fact(6))
一年编程经验(读过SICP)
    @tailcall  
    def fact(x, acc=1):  
        if (x > 1): 
            return (fact((x - 1), (acc * x)))  
        else:       
            return acc  
    print(fact(6)) 
一年编程经验(Python)
    def Factorial(x):  
        res = 1 
        for i in xrange(2, x + 1):  
            res *= i  
            return res  
     print Factorial(6)
懒惰的Python程序员
    def fact(x):  
        return x > 1 and x * fact(x - 1) or 1  
    print fact(6) 
更懒的Python程序员
    f = lambda x: x and x * f(x - 1) or 1  //匿名函数,厉害。程序猿真是懒人做的!
    print f(6) 
Python专家
fact = lambda x: reduce(int.__mul__, xrange(2, x + 1), 1)  
print fact(6)                              //专家厉害啊。
Python黑客
    import sys  
    @tailcall 
    def fact(x, acc=1):  
        if x: return fact(x.__sub__(1), acc.__mul__(x))  
        return acc  
    sys.stdout.write(str(fact(6)) + '\n') //一般人压根看不懂。
专家级程序员
    from c_math import fact  
    print fact(6) 
大英帝国程序员
    from c_maths import fact  
    print fact(6) 
Web设计人员
    def factorial(x):  
        #-------------------------------------------------  
        #--- Code snippet from The Math Vault          ---  
        #--- Calculate factorial (C) Arthur Smith 1999 ---  
        #-------------------------------------------------  
        result = str(1)  
        i = 1 #Thanks Adam  
        while i <= x:  
            #result = result * i  #It's faster to use *=  
            #result = str(result * result + i)  
               #result = int(result *= i) #??????  
            result = str(int(result) * i)  
            #result = int(str(result) * i)  
            i = i + 1 
        return result  
    print factorial(6) 
Unix 程序员
    import os  
    def fact(x):  
        os.system('factorial ' + str(x))  
    fact(6) 
Windows 程序员
    <span style="font-size:14px;">NULL = None 
    def CalculateAndPrintFactorialEx(dwNumber,  
                                     hOutputDevice,  
                                     lpLparam,  
                                     lpWparam,  
                                     lpsscSecurity,  
                                     *dwReserved):  
        if lpsscSecurity != NULL:  
            return NULL #Not implemented  
        dwResult = dwCounter = 1 
        while dwCounter <= dwNumber:  
            dwResult *= dwCounter  
            dwCounter += 1 
        hOutputDevice.write(str(dwResult))  
        hOutputDevice.write('\n')  
        return 1 
    import sys  
    CalculateAndPrintFactorialEx(6, sys.stdout, NULL, NULL, NULL,  
     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) //可能自己都晕菜了...</span>

企业级程序员

def new(cls, *args, **kwargs):  
    return cls(*args, **kwargs)  
   
class Number(object):  
    pass 
   
class IntegralNumber(int, Number):  
    def toInt(self):  
        return new (int, self)  
   
class InternalBase(object):  
    def __init__(self, base):  
        self.base = base.toInt()  
   
    def getBase(self):  
        return new (IntegralNumber, self.base)  
   
class MathematicsSystem(object):  
    def __init__(self, ibase):  
        Abstract  
   
    @classmethod 
    def getInstance(cls, ibase):  
        try:  
            cls.__instance  
        except AttributeError:  
            cls.__instance = new (cls, ibase)  
        return cls.__instance  
   
class StandardMathematicsSystem(MathematicsSystem):  
    def __init__(self, ibase):  
        if ibase.getBase() != new (IntegralNumber, 2):  
            raise NotImplementedError  
        self.base = ibase.getBase()  
   
    def calculateFactorial(self, target):  
        result = new (IntegralNumber, 1)  
        i = new (IntegralNumber, 2)  
        while i <= target:  
            result = result * i  
            i = i + new (IntegralNumber, 1)  
        return result  
   
print StandardMathematicsSystem.getInstance(new (InternalBase,  
new (IntegralNumber, 2))).calculateFactorial(new (IntegralNumber, 6)) //面向对象,但就此题来说,又长又臭。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值