有意思的文章:程序员的进化

不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的程序员编出的Python代码显示出了不同的风格,代码都很简单,有趣。我把它整理了一下,并修改了几处错误。

编程新手

 
 
 
  1. def factorial(x): 
  2.     if x == 0: 
  3.         return 1
  4.     else: 
  5.         return x * factorial(x - 1) 
  6. print factorial(6)

一年编程经验(学Pascal的)

 
 
 
  1. def factorial(x): 
  2.     result = 1
  3.     i = 2
  4.     while i <= x: 
  5.         result = result * i 
  6.         i = i + 1
  7.     return result 
  8. print factorial(6)

一年编程经验(学C的)

 
 
 
  1. def fact(x): #{ 
  2.     result = i = 1; 
  3.     while (i <= x): #{ 
  4.         result *= i; 
  5.         i += 1; 
  6.     #} 
  7.     return result; 
  8. #} 
  9. print(fact(6))

一年编程经验(读过SICP)

 
 
 
  1. @tailcall
  2. def fact(x, acc=1): 
  3.     if (x > 1): return (fact((x - 1), (acc * x))) 
  4.     else:       return acc 
  5. print(fact(6))

一年编程经验(Python)

 
 
 
  1. def Factorial(x): 
  2.     res = 1
  3.     for i in xrange(2, x + 1): 
  4.         res *= i 
  5.     return res 
  6. print Factorial(6)

懒惰的Python程序员

 
 
 
  1. def fact(x): 
  2.     return x > 1 and x * fact(x - 1) or 1
  3. print fact(6) 

更懒的Python程序员

 
 
 
  1. f = lambda x: x and x * f(x - 1) or 1
  2. print f(6)

Python 专家

 
 
 
  1. fact = lambda x: reduce(int.__mul__, xrange(2, x + 1), 1) 
  2. print fact(6) 

Python 黑客

 
 
 
  1. import sys 
  2. @tailcall
  3. def fact(x, acc=1): 
  4.     if x: return fact(x.__sub__(1), acc.__mul__(x)) 
  5.     return acc 
  6. sys.stdout.write(str(fact(6)) + '\n') 

专家级程序员

 
 
 
  1. rom c_math import fact 
  2. print fact(6) 

大英帝国程序员

 
 
 
  1. from c_maths import fact 
  2. print fact(6) 

Web 设计人员

 
 
 
  1. def factorial(x): 
  2.     #------------------------------------------------- 
  3.     #--- Code snippet from The Math Vault          --- 
  4.     #--- Calculate factorial (C) Arthur Smith 1999 --- 
  5.     #------------------------------------------------- 
  6.     result = str(1) 
  7.     i = 1 #Thanks Adam 
  8.     while i <= x: 
  9.         #result = result * i  #It's faster to use *= 
  10.         #result = str(result * result + i) 
  11.            #result = int(result *= i) #?????? 
  12.         result = str(int(result) * i) 
  13.         #result = int(str(result) * i) 
  14.         i = i + 1
  15.     return result 
  16. print factorial(6)

Unix 程序员

 
 
 
  1. import os 
  2. def fact(x): 
  3.     os.system('factorial ' + str(x)) 
  4. fact(6) 

Windows 程序员

 
 
 
  1. NULL = None
  2. def CalculateAndPrintFactorialEx(dwNumber, 
  3.                                  hOutputDevice, 
  4.                                  lpLparam, 
  5.                                  lpWparam, 
  6.                                  lpsscSecurity, 
  7.                                  *dwReserved): 
  8.     if lpsscSecurity != NULL: 
  9.         return NULL #Not implemented 
  10.     dwResult = dwCounter = 1
  11.     while dwCounter <= dwNumber: 
  12.         dwResult *= dwCounter 
  13.         dwCounter += 1
  14.     hOutputDevice.write(str(dwResult)) 
  15.     hOutputDevice.write('\n') 
  16.     return 1
  17. import sys 
  18. CalculateAndPrintFactorialEx(6, sys.stdout, NULL, NULL, NULL, 
  19.  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)

企业级程序员

 
 
 
  1. def new(cls, *args, **kwargs): 
  2.     return cls(*args, **kwargs) 
  3.    
  4. class Number(object): 
  5.     pass
  6.    
  7. class IntegralNumber(int, Number): 
  8.     def toInt(self): 
  9.         return new (int, self) 
  10.    
  11. class InternalBase(object): 
  12.     def __init__(self, base): 
  13.         self.base = base.toInt() 
  14.    
  15.     def getBase(self): 
  16.         return new (IntegralNumber, self.base) 
  17.    
  18. class MathematicsSystem(object): 
  19.     def __init__(self, ibase): 
  20.         Abstract 
  21.    
  22.     @classmethod
  23.     def getInstance(cls, ibase): 
  24.         try: 
  25.             cls.__instance 
  26.         except AttributeError: 
  27.             cls.__instance = new (cls, ibase) 
  28.         return cls.__instance 
  29.    
  30. class StandardMathematicsSystem(MathematicsSystem): 
  31.     def __init__(self, ibase): 
  32.         if ibase.getBase() != new (IntegralNumber, 2): 
  33.             raise NotImplementedError 
  34.         self.base = ibase.getBase() 
  35.    
  36.     def calculateFactorial(self, target): 
  37.         result = new (IntegralNumber, 1) 
  38.         i = new (IntegralNumber, 2) 
  39.         while i <= target: 
  40.             result = result * i 
  41.             i = i + new (IntegralNumber, 1) 
  42.         return result 
  43.    
  44. print StandardMathematicsSystem.getInstance(new (InternalBase, 
  45. new (IntegralNumber, 2))).calculateFactorial(new (IntegralNumber, 6))

名称栏目:有意思的文章:程序员的进化
网站网址:http://www.mswzjz.cn/qtweb/news31/359131.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能