• 程序员的进化 狼人:


    不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的程序员编出的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) 

    一年编程经验(读过 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. 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)) 

    译文链接:http://www.aqee.net/2011/02/09/the-evolution-of-a-python-programmer/

    原文链接:程序员的进化

  • 相关阅读:
    03-Spring默认标签解析
    想要写出好味道的代码,你需要养成这些好习惯!
    IDEA 缺少Springboot启动图标 如何添加
    echarts的canvas大小
    JS控制div上下滚动内容
    2020新的一年开始了
    2019年第一个工作日!
    关于.net项目前后端分离框架(一)
    MongoDB学习一:安装及简单使用
    spring默认标签与自定义标签学习
  • 原文地址:https://www.cnblogs.com/waw/p/2186978.html
Copyright © 2020-2023  润新知