非●梵高

四时有常 春夏秋冬 各行其道 青草鲢鳙

你属于哪个层次的程序员

   不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的程序员编出的Phthon代码显示出了不同的风格,代码都很简单,有趣。这篇文章的原始出处在这里
编程新手
  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.         resultresult = result * i 
  6.         ii = i + 1 
  7.     return result 
  8. print factorial(6)
一年编程经验
  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 专家
 fact = lambda x: reduce(int.__mul__, xrange(2, x + 1), 1) 
  1. 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. from 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.         #resultresult = 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.         ii = 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.             resultresult = result * i 
  41.             ii = i + new (IntegralNumber, 1) 
  42.         return result 
  43.   
  44. print StandardMathematicsSystem.getInstance(new (InternalBase, 
  45. new (IntegralNumber, 2))).calculateFactorial(new (IntegralNumber, 6))

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭