不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的程序员编出的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:
 - result = result * i
 - i = 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')
 
专家级程序员
- rom 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 程序员
- 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)
 
企业级程序员
- 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))
 
                网站标题:有意思的文章:程序员的进化
                
                本文链接:http://www.csdahua.cn/qtweb/news31/359131.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网